#include <iostream>
#include <deque>
#include <vector>
using namespace std;
/*
Consider each connected component as one node in the graph.
Consider adjacent connected components as having an edge between them
Res = max distance between cc(1, 1) and any other cc
*/
int H, W;
int p(int i, int j)
{
return (W+2)*i + j;
}
int main()
{
cin >> H >> W;
char c[(H+2)*(W+2)];
for(int i = 0; i <= H; i++) c[p(i, 0)] = c[p(i, W+1)] = '.';
for(int j = 0; j <= W; j++) c[p(0, j)] = c[p(H+1, j)] = '.';
for(int i = 1; i <= H; i++)
{
for(int j = 1; j <= W; j++)
{
cin >> c[p(i, j)];
}
}
int temp;
vector<int> res((H+2)*(W+2), 1e9);
res[p(1, 1)] = 0;
deque<int> tbv;
tbv.push_back(p(1, 1));
int final_res = 0;
while(!tbv.empty())
{
temp = tbv.front();
tbv.pop_front();
final_res = max(final_res, res[temp]);
for(int k: {temp+1, temp-1, temp+W+2, temp-W-2})
{
if(c[k] == '.') continue;
if(res[k] != 1e9) continue;
if(c[temp] != c[k])
{
res[k] = res[temp] + 1;
tbv.push_back(k);
}
else
{
res[k] = res[temp];
tbv.push_front(k);
}
}
}
cout << final_res + 1 << '\n';
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
23 ms |
1740 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
13 ms |
1284 KB |
Output is correct |
5 |
Correct |
7 ms |
716 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
8 |
Correct |
1 ms |
204 KB |
Output is correct |
9 |
Correct |
1 ms |
332 KB |
Output is correct |
10 |
Correct |
6 ms |
688 KB |
Output is correct |
11 |
Correct |
4 ms |
460 KB |
Output is correct |
12 |
Correct |
8 ms |
820 KB |
Output is correct |
13 |
Correct |
8 ms |
704 KB |
Output is correct |
14 |
Correct |
7 ms |
800 KB |
Output is correct |
15 |
Correct |
22 ms |
1668 KB |
Output is correct |
16 |
Correct |
24 ms |
1652 KB |
Output is correct |
17 |
Correct |
20 ms |
1648 KB |
Output is correct |
18 |
Correct |
13 ms |
1228 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
588 KB |
Output is correct |
2 |
Correct |
121 ms |
9484 KB |
Output is correct |
3 |
Correct |
1121 ms |
94272 KB |
Output is correct |
4 |
Correct |
266 ms |
22296 KB |
Output is correct |
5 |
Correct |
604 ms |
53096 KB |
Output is correct |
6 |
Correct |
1392 ms |
100932 KB |
Output is correct |
7 |
Correct |
4 ms |
588 KB |
Output is correct |
8 |
Correct |
4 ms |
588 KB |
Output is correct |
9 |
Correct |
6 ms |
588 KB |
Output is correct |
10 |
Correct |
3 ms |
460 KB |
Output is correct |
11 |
Correct |
4 ms |
588 KB |
Output is correct |
12 |
Correct |
2 ms |
332 KB |
Output is correct |
13 |
Correct |
116 ms |
9480 KB |
Output is correct |
14 |
Correct |
69 ms |
5488 KB |
Output is correct |
15 |
Correct |
72 ms |
6100 KB |
Output is correct |
16 |
Correct |
51 ms |
3964 KB |
Output is correct |
17 |
Correct |
311 ms |
24132 KB |
Output is correct |
18 |
Correct |
275 ms |
23764 KB |
Output is correct |
19 |
Correct |
266 ms |
22228 KB |
Output is correct |
20 |
Correct |
236 ms |
20512 KB |
Output is correct |
21 |
Correct |
654 ms |
54932 KB |
Output is correct |
22 |
Correct |
675 ms |
53088 KB |
Output is correct |
23 |
Correct |
613 ms |
45728 KB |
Output is correct |
24 |
Correct |
644 ms |
53708 KB |
Output is correct |
25 |
Correct |
1316 ms |
94264 KB |
Output is correct |
26 |
Correct |
1111 ms |
97304 KB |
Output is correct |
27 |
Correct |
1353 ms |
103332 KB |
Output is correct |
28 |
Correct |
1439 ms |
100904 KB |
Output is correct |
29 |
Correct |
1400 ms |
99736 KB |
Output is correct |
30 |
Correct |
1385 ms |
100972 KB |
Output is correct |
31 |
Correct |
1002 ms |
60592 KB |
Output is correct |
32 |
Correct |
1483 ms |
102588 KB |
Output is correct |