#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<string>grid(4002);
int ans=0;
void floodfill(int r,int c,vector<vector<bool>>&visited,char &k)
{
stack<pair<int,int>>q;
q.push({r,c});
bool mark=false;
while(!q.empty())
{
r=q.top().first,c=q.top().second;
q.pop();
if(r<0 || c<0 || r>=n || c>=m || grid[r][c]=='.') continue;
if(visited[r][c]) continue;
visited[r][c]=true;
if(k!=grid[r][c] && !mark)
{
ans++;
mark=true;
}
q.push({r-1,c});
q.push({r,c-1});
q.push({r+1,c});
q.push({r,c+1});
}
}
int main()
{
cin>>n>>m;
for(int i = 0;i<n; i++)
{
cin>>grid[i];
}
vector<vector<bool>>visited(n,vector<bool>(m,false));
floodfill(0,0,visited,grid[0][0]);
if(grid[0][0]!='.')
ans++;
if(grid[0][0]=='.' || grid[n-1][m-1]=='.') cout<<0;
else
cout<<ans;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |