Untitled

 avatar
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...