#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define MIN(a, b) ((a) < (b) ? (a) : (b))
using namespace std;
void solve(vector<vector<char>> &grid,char cur,int x, int y)
{
if(x>=grid.size()||x<0||y>=grid[0].size()||y<0)
return;
if(grid[x][y]!=cur)
return;
grid[x][y] = (grid[x][y]=='F')?'R':'F';
solve(grid,cur,x,y+1);
solve(grid,cur,x,y-1);
solve(grid,cur,x+1,y);
solve(grid,cur,x-1,y);
}
int single(vector<vector<char>> &grid)
{
int c1 = 0,c2=0;
for(int i=0;i<grid.size();i++)
{
for(int j=0;j<grid[0].size();j++)
{
if(grid[i][j]=='F')
c1++;
else if(grid[i][j]=='R')
c2++;
}
}
if(c1==0&&c2==0)
return -1;
else if(c1==0||c2==0)
return 1;
else
return 0;
}
int main()
{
int h,w;cin>>h>>w;
vector<vector<char>> grid(h,vector<char>(w));
for(int i=0;i<h;i++)
{
for(int j=0;j<w;j++)
{
cin>>grid[i][j];
}
}
if(single(grid)==-1)
{
cout<<0<<endl;
return 0;
}
int ans = 1;
while(single(grid)==0)
{
solve(grid,grid[0][0],0,0);
ans++;
}
cout<<ans<<endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |