1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | #include<iostream> #include<queue> #include<string.h> using namespace std; typedef pair < int, int >ii; int R, C, i, j; queue < ii > myQueue; int visit[100][100]; int dist[100][100]; void bfs(ii s) { int i, j; int count = 0; ii node; memset(visit, 0, sizeof(visit)); memset(dist, 0, sizeof(dist)); myQueue.push(s); dist[node.first][node.second] = 0; while (!myQueue.empty()) { node = myQueue.front(); myQueue.pop(); if (visit[node.first][node.second]) continue; visit[node.first][node.second] = 1; //cout << node.first << " " << node.second << "\n"; i = node.first; j = node.second; if (j - 1 < R && j - 1 >= 0) { myQueue.push(make_pair(i, j - 1)); if(dist[i][j - 1] == 0) dist[i][j - 1] = dist[i][j] + 1; } if (j + 1 < R && j + 1 >= 0) { myQueue.push(make_pair(i, j + 1)); if(dist[i][j+1] == 0) dist[i][j + 1] = dist[i][j] + 1; } if (i - 1 < C && i - 1 >= 0) { myQueue.push(make_pair(i - 1, j)); if(dist[i-1][j] == 0) dist[i - 1][j] = dist[i][j] + 1; } if (i + 1 < C && i + 1 >= 0) { myQueue.push(make_pair(i + 1, j)); if(dist[i+1][j] == 0) dist[i + 1][j] = dist[i][j] + 1; } } } int main() { char input[100][100]; scanf("%d %d", &R, &C); for (i = 0; i < R; i++) scanf("%s", &input[i]); int GRID[R][C]; for (i = 0; i < R; i++) for (j = 0; j < C; j++) GRID[i][j] = input[i][j] - '0'; for (i = 0; i < R; i++) for (j = 0; j < C; j++) { if (GRID[i][j] == 1) bfs(make_pair(i, j)); } for (i = 0; i < R; i++) { for (j = 0; j < C; j++) { printf("%d", dist[i][j]); } printf("\n"); } } |
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxzdHJpbmcuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBwYWlyIDwgaW50LCBpbnQgPmlpOwppbnQgUiwgQywgaSwgajsKcXVldWUgPCBpaSA+IG15UXVldWU7CgppbnQgdmlzaXRbMTAwXVsxMDBdOwppbnQgZGlzdFsxMDBdWzEwMF07CnZvaWQgYmZzKGlpIHMpCnsKICAgIGludCBpLCBqOwogICAgaW50IGNvdW50ID0gMDsKICAgIGlpIG5vZGU7CiAgICBtZW1zZXQodmlzaXQsIDAsIHNpemVvZih2aXNpdCkpOwogICAgbWVtc2V0KGRpc3QsIDAsIHNpemVvZihkaXN0KSk7CiAgICBteVF1ZXVlLnB1c2gocyk7CiAgICBkaXN0W25vZGUuZmlyc3RdW25vZGUuc2Vjb25kXSA9IDA7CgogICAgd2hpbGUgKCFteVF1ZXVlLmVtcHR5KCkpIHsKCW5vZGUgPSBteVF1ZXVlLmZyb250KCk7CglteVF1ZXVlLnBvcCgpOwoJaWYgKHZpc2l0W25vZGUuZmlyc3RdW25vZGUuc2Vjb25kXSkKCSAgICBjb250aW51ZTsKCXZpc2l0W25vZGUuZmlyc3RdW25vZGUuc2Vjb25kXSA9IDE7CgoJLy9jb3V0IDw8IG5vZGUuZmlyc3QgPDwgIiAiIDw8IG5vZGUuc2Vjb25kIDw8ICJcbiI7CglpID0gbm9kZS5maXJzdDsKCWogPSBub2RlLnNlY29uZDsKCglpZiAoaiAtIDEgPCBSICYmIGogLSAxID49IDApIHsKCSAgICBteVF1ZXVlLnB1c2gobWFrZV9wYWlyKGksIGogLSAxKSk7CiAgICAgICAgICAgIGlmKGRpc3RbaV1baiAtIDFdID09IDApCgkgICAgZGlzdFtpXVtqIC0gMV0gPSBkaXN0W2ldW2pdICsgMTsKCX0KCWlmIChqICsgMSA8IFIgJiYgaiArIDEgPj0gMCkgewoJICAgIG15UXVldWUucHVzaChtYWtlX3BhaXIoaSwgaiArIDEpKTsKICAgICAgICAgICAgaWYoZGlzdFtpXVtqKzFdID09IDApCgkgICAgZGlzdFtpXVtqICsgMV0gPSBkaXN0W2ldW2pdICsgMTsKCX0KCWlmIChpIC0gMSA8IEMgJiYgaSAtIDEgPj0gMCkgewoJICAgIG15UXVldWUucHVzaChtYWtlX3BhaXIoaSAtIDEsIGopKTsKICAgICAgICAgICAgaWYoZGlzdFtpLTFdW2pdID09IDApCgkgICAgZGlzdFtpIC0gMV1bal0gPSBkaXN0W2ldW2pdICsgMTsKCX0KCWlmIChpICsgMSA8IEMgJiYgaSArIDEgPj0gMCkgewoJICAgIG15UXVldWUucHVzaChtYWtlX3BhaXIoaSArIDEsIGopKTsKICAgICAgICAgICAgaWYoZGlzdFtpKzFdW2pdID09IDApCgkgICAgZGlzdFtpICsgMV1bal0gPSBkaXN0W2ldW2pdICsgMTsKCX0KCiAgICB9CgoKfQoKCgppbnQgbWFpbigpCnsKCiAgICBjaGFyIGlucHV0WzEwMF1bMTAwXTsKICAgIHNjYW5mKCIlZCAlZCIsICZSLCAmQyk7CiAgICBmb3IgKGkgPSAwOyBpIDwgUjsgaSsrKQoJc2NhbmYoIiVzIiwgJmlucHV0W2ldKTsKICAgIGludCBHUklEW1JdW0NdOwogICAgZm9yIChpID0gMDsgaSA8IFI7IGkrKykKCWZvciAoaiA9IDA7IGogPCBDOyBqKyspCgkgICAgR1JJRFtpXVtqXSA9IGlucHV0W2ldW2pdIC0gJzAnOwogICAgZm9yIChpID0gMDsgaSA8IFI7IGkrKykKCWZvciAoaiA9IDA7IGogPCBDOyBqKyspIHsKCSAgICBpZiAoR1JJRFtpXVtqXSA9PSAxKQoJCWJmcyhtYWtlX3BhaXIoaSwgaikpOwoJfQogICAgZm9yIChpID0gMDsgaSA8IFI7IGkrKykgewoJZm9yIChqID0gMDsgaiA8IEM7IGorKykgewoJICAgIHByaW50ZigiJWQiLCBkaXN0W2ldW2pdKTsKCX0KCXByaW50ZigiXG4iKTsKICAgIH0KICAgCn0=
-
upload with new input
-
result: Success time: 0.01s memory: 2940 kB returned value: 0
-
result: Success time: 0.01s memory: 2940 kB returned value: 0
3 3 010 000 000
121 212 323


