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>
#define ll long long
#define pii pair<int, int>
#define endl '\n'
using namespace std;
int N, M;
vector<vector<bool>> vis;
vector<vector<char>> grid;
queue<pii> q;
int mvt[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
void dfs(int r, int c, char let)
{
if (r < 0 || c < 0 || r >= N || c >= M || grid[r][c] == '.' || vis[r][c])
return;
if (grid[r][c] != let)
{
q.push({r, c});
return;
}
vis[r][c] = true;
for (int i = 0; i < 4; i++)
{
int rx = r + mvt[i][0], cx = c + mvt[i][1];
dfs(rx, cx, let);
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
grid.resize(N, vector<char>(M));
vis.resize(N, vector<bool>(M, false));
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
cin >> grid[i][j];
q.push({0, 0});
int res = 0;
while (!q.empty())
{
int sz = q.size();
for (int _ = 0; _ < sz; _++)
{
int r, c;
tie(r, c) = q.front();
q.pop();
dfs(r, c, grid[r][c]);
}
++res;
}
cout << res << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |