Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <climits>
- using namespace std;
- struct ver
- {
- bool color;
- int val;
- };
- ver d[102];
- int n;
- bool flag = false;
- void DFS(int u)
- {
- if (flag == false)
- {
- if (u == n * n)
- {
- flag = true;
- }
- d[u].color = true;
- if (d[u].val % 2 == 1)
- {
- if ((u - n >= 1) && (d[u - n].color == false))
- DFS(u - n);
- d[u].val--;
- }
- if (d[u].val >= 8)
- {
- if ((u - 1 >= 1) && ((u - 1) % n != 0) && (d[u - 1].color == false))
- DFS(u - 1);
- d[u].val = d[u].val - 8;
- }
- if ((d[u].val == 2 || d[u].val == 6))
- {
- if ((u + n <= n * n) && (d[u + n].color == false))
- DFS(u + n);
- d[u].val = d[u].val - 2;
- }
- if (d[u].val == 4)
- {
- if ((u % n != 0) && (d[u + 1].color == false))
- DFS(u + 1);
- d[u].val = d[u].val - 4;
- }
- }
- }
- int main()
- {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- cin >> n;
- for (int i = 1; i <= n * n; i++)
- {
- d[i].color = false;
- cin >> d[i].val;
- }
- DFS(1);
- if (flag == true)
- cout << "Yes";
- else
- cout << "No";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement