Untitled
unknown
plain_text
2 years ago
1.7 kB
3
Indexable
#include<iostream> using namespace std; int n; int Qx[10000000],Qy[10000000]; int map[100][100]; int front = -1; int rear = -1; int vs[100][100] = {0}; int dx[4] = {0,1,0,-1}; int dy[4] = {1,0,-1,0}; int stx, sty; bool checkbien(int x, int y) { if (x<=0||x>n||y<=0||y>n) return false; return true; } void push(int x, int y) { rear ++; Qx[rear] = x; Qy[rear] = y; } void pop(int &x, int &y) { front ++; x = Qx[front]; y = Qy[front]; } bool Bfs(int x, int y, int k) { int d = 1; push(x,y); vs[x][y] = 1; while (rear != front) { pop(x,y); for (int l = 0; l<4; l++) { int xx = x+dx[l]; int yy = y+dy[l]; if (checkbien(xx,yy) && map[xx][yy] == k && vs[xx][yy] ==0) { vs[xx][yy] = 1; push(xx,yy); d++; } } } if (d!=5) return false; return true; } int main() { //freopen("input.txt","r",stdin); int t; int x1, y1; cin >> t; for (int tc = 1; tc <= t ; tc++) { cin >> n; front = rear = -1; for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) { vs[i][j] = 0; map[i][j] = n; } for (int i = 1; i<=n-1; i++) { for (int k=0; k<n; k++) { cin >> x1 >> y1; map[x1][y1] = i; } } int dk=1; for (int k=1; k<=n; k++) { int d=1; for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) if (map[i][j] == k && vs[i][j] == 0) { stx = i; sty = j; break; } if (!Bfs(stx, sty,k)){ dk = 0; break; } } cout << "Case #" << tc << endl; if (dk == 1) cout << "good" << endl; else if(dk==0) cout <<"wrong"<<endl; } return 0; }
Editor is loading...