RT
QwQ
#include <iostream>
using namespace std;
const int MAXN=100;
int n,m,ans;
char map[MAXN][MAXN];
void dfs(int x,int y)
{
map[x][y]='.';
for(int i=-1; i<=1; i++)
for(int j=-1; j<=1; j++)
{
int sx=x+i;
int sy=y+j;
if(sx>=0&&sx<=n&&sy>=0&&sy<=m&&map[sx][sy]=='W')
dfs(sx,sy);
}
return;
}
int main()
{
cin>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
cin>>map[i][j];
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
if(map[i][j]=='W')
dfs(i,j),ans++;
cout<<ans;
return 0;
}
加上快读&快写更惨
#include <iostream>
using namespace std;
const int MAXN=100;
int n,m,ans;
char map[MAXN][MAXN];
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9')
x=x*10+ch-'0',ch=getchar();
return x*f;
}
inline int write(int x)
{
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
}
void dfs(int x,int y)
{
map[x][y]='.';
for(int i=-1; i<=1; i++)
for(int j=-1; j<=1; j++)
{
int sx=x+i;
int sy=y+j;
if(sx>=0&&sx<=n&&sy>=0&&sy<=m&&map[sx][sy]=='W')
dfs(sx,sy);
}
return;
}
int main()
{
n=read();
m=read();
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
scanf("%c",map[i][j]);
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
if(map[i][j]=='W')
dfs(i,j),ans++;
write(ans);
return 0;
}