Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int dx[8] = {1,1,1,0,0,-1,-1,-1};
- int dy[8] = {0,1,-1, 1,-1,0,1,-1};
- string Solution::solve(int x, int y, int n, int r, vector<int> &X, vector<int> &Y) {
- vector< vector<bool>> mat(x+1, vector<bool>(y+1));
- for(int i = 0; i<=x; i++)
- {
- for(int j = 0; j<=y; j++)
- {
- bool flag = false;
- for(int k = 0; k<X.size(); k++)
- {
- if((X[k] - i)*(X[k] - i) + (Y[k] - j)*(Y[k] - j) <= r*r )
- {
- flag = true;
- break;
- }
- }
- mat[i][j] = flag;
- }
- }
- queue<pair<int, int>> q;
- if(mat[0][0] = true) return "NO";
- if(mat[x][y] = true) return "NO";
- q.push({0,0});
- mat[0][0] = true;
- while(!q.empty())
- {
- pair<int, int> top = q.front();
- q.pop();
- if(top.first == x && top.second == y) return "YES";
- for(int i = 0; i<8; i++)
- {
- int x1 = dx[i] + top.first;
- int y1 = dy[i] + top.second;
- if(x1<=x && y1<=y && x1>=0 && y1>=0 && mat[x1][y1] == false) {
- q.push({x1, y1});
- mat[x1][y1] = true;
- }
- }
- }
- return "NO";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement