// UVa 11110 - Equidivisions
#include <iostream>
#include <string.h>
#include <sstream>
#include <string>
using namespace std;
bool yet[100][100];
int grid[100][100];
int n;
int count(int i, int j, int g) {
yet[i][j] = false;
int c = 1;
if (i > 0 && yet[i - 1][j] && grid[i - 1][j] == g)
c += count(i - 1, j, g);
if (j > 0 && yet[i][j - 1] && grid[i][j - 1] == g)
c += count(i, j - 1, g);
if (i < n - 1 && yet[i + 1][j] && grid[i + 1][j] == g)
c += count(i + 1, j, g);
if (j < n - 1 && yet[i][j + 1] && grid[i][j + 1] == g)
c += count(i, j + 1, g);
return c;
}
bool valid() {
memset(yet, true, sizeof(yet));
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (yet[i][j]) {
if (count(i, j, grid[i][j]) != n)
return false;
}
return true;
}
int main() {
for (cin >> n; n; cin >> n) {
string l;
getline(cin, l);
memset(grid, 0, sizeof(grid));
for (int i = 1; i < n; i++) {
getline(cin, l);
istringstream ss(l);
int a, b;
while (ss >> a >> b)
grid[a - 1][b - 1] = i;
}
if (valid())
cout << "good\n";
else
cout << "wrong\n";
}
return 0;
}
Monday, November 16, 2015
UVa 11110 - Equidivisions
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment