This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
using namespace std;
const int Nmax = 1010;
int n, m;
char c[Nmax][Nmax];
int par[Nmax * Nmax], sz[Nmax * Nmax], d[Nmax * Nmax];
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
vector <int> g[Nmax * Nmax];
int Find(int u) {
return (u == par[u] ? u : par[u] = Find(par[u]));
}
void Union(int u, int v) {
if ((u = Find(u)) == (v = Find(v))) return;
if (sz[u] < sz[v]) swap(u, v);
par[v] = u;
sz[u] += sz[v];
}
int main() {
ios :: sync_with_stdio(0); cin.tie(0);
cin >> n >> m;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
cin >> c[i][j];
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j) par[i * m + j] = i * m + j, sz[i * m + j] = 1;
for (int u = 0; u < n; ++u)
for (int v = 0; v < m; ++v) {
if (c[u][v] == '*') continue;
for (int i = 0; i < 4; ++i) {
int x = u + dx[i], y = v + dy[i];
if (x < 0 || x >= n || y < 0 || y >= m || c[x][y] == '*') continue;
if (c[x][y] == c[u][v]) Union(x * m + y, u * m + v);
}
}
for (int u = 0; u < n; ++u)
for (int v = 0; v < m; ++v) {
if (c[u][v] == '*') continue;
for (int i = 0; i < 4; ++i) {
int x = u + dx[i], y = v + dy[i];
if (x < 0 || x >= n || y < 0 || y >= m || c[x][y] == '*') continue;
if (c[x][y] != c[u][v]) {
g[Find(x * m + y)].push_back(Find(u * m + v));
g[Find(u * m + v)].push_back(Find(x * m + y));
}
}
}
queue <int> q;
q.push(Find(0));
for (int i = 0; i < n * m; ++i) d[i] = -1;
d[Find(0)] = 1;
while (q.size()) {
int u = q.front();
q.pop();
for (auto v: g[u]) {
if (d[v] != -1) continue;
d[v] = d[u] + 1;
q.push(v);
}
}
cout << *max_element(d, d + n * m);
}
Compilation message (stderr)
zoo.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
3 | #pragma GCC optimization ("O3")
|
zoo.cpp:4: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
4 | #pragma GCC optimization ("unroll-loops")
|
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |