#include <vector>
#include <string>
#include <queue>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <bit>
#include <bitset>
using namespace std;
#define loop(i,x) for(int i=0;i<x;i++)
#define loop2(i,x,n) for(int i=x;i<n;i++)
char grid[501][501];
bool visited[501][501];
int dx[]={0,0,1,-1};
int dy[]={-1,1,0,0};
int main(){
int h,w;
cin>>h>>w;
loop(i,h){
loop(j,w){
grid[i][j]='.';
}
}
loop(i,h){
loop(j,w){
cin>>grid[i][j];
}
}
deque<pair<int,int>> q;
int m=0;
q.push_back({0,0});
while (q.size()){
auto c=q.front();
q.pop_front();
visited[c.first][c.second]=true;
loop(i,4){
if(0<=c.first+dy[i] && c.first+dy[i]<h && 0<c.second+dx[i] && c.second+dx[i]<w && !visited[c.first+dy[i]][c.second+dx[i]] && grid[c.first+dy[i]][c.second+dx[i]]!=grid[c.first][c.second] && grid[c.first+dy[i]][c.second+dx[i]]!='.'){
q.push_back({c.first+dx[i],c.second+dy[i]});
m++;
}
else if(0<=c.first+dy[i] && c.first+dy[i]<h && 0<c.second+dx[i] && c.second+dx[i]<w && !visited[c.first+dy[i]][c.second+dx[i]] && grid[c.first+dy[i]][c.second+dx[i]]==grid[c.first][c.second]&& grid[c.first+dy[i]][c.second+dx[i]]!='.'){
q.push_front({c.first+dx[i],c.second+dy[i]});
}
}
}
cout<<m<<'\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |