度度熊的01世界
Accepts: 627
Submissions: 2714
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <map> #define ms(x,y) memset(x,y,sizeof(x)) using namespace std; typedef long long ll; const int maxn = 1e9 + 2; const double pi = acos(-1.0); const int dx[] = { 0,1,0,-1 }, dy[] = { 1,0,-1,0 }; struct node { int x, y; node(int p, int q) { x = p; y = q; } }; int n, m; char a[110][110] = { 0 }; bool book[110][110] = { 0 }; int bfs(int x, int y, char c) { int bao = 1; queue<node> que; que.push(node(x, y)); book[x][y] = 1; while (que.size()) { node p = que.front(); que.pop(); for (int i = 0; i < 4; i++) { int px, py; px = p.x + dx[i]; py = p.y + dy[i]; if (px >= 0 && px < n&&py >= 0 && py < m) { if (!book[px][py] && a[px][py] == c) { book[px][py] = 1; que.push(node(px, py)); } } else { bao = 0; } } } return bao; } int main() { while (~scanf("%d%d", &n, &m)) { ms(book, 0); ms(a, 0); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf(" %c", &a[i][j]); } } int num0 = 0, num1 = 0; int bao1 = 0, bao0 = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (!book[i][j]) { if (a[i][j] == '0') { num0++; bao1 += bfs(i, j, '0'); } else { num1++; bao0 += bfs(i, j, '1'); } } } } //printf("num0:%d num1:%d bao0:%d bao1:%d ", num0, num1, bao0, bao1); if (num1 == 1 && bao1 == 0) { printf("1 "); } else if (num1 == 1 && bao1 == 1) { printf("0 "); } else printf("-1 "); } }