wa得80分,求助(玄关)
查看原帖
wa得80分,求助(玄关)
1373509
Himborne楼主2024/10/6 21:54
#include<cstdio>
#include<queue>
using namespace std;
queue<int>hori;
queue<int>para;
int n,m;
int ans;
char s[101][101];
inline int read(){
    char p=0;int r=0,o=0;
    for(;p<'0'||p>'9';o|=p=='-',p=getchar());
    for(;p>='0'&&p<='9';r=(r<<1)+(r<<3)+(p^48),p=getchar());
    return o?(~r)+1:r;
}
inline void bfs(int x,int y){
    s[x][y]='.';
    int dx,dy;
    for(int i=-1;i<=1;i++){
        for(int j=-1;j<=1;j++){
            dx=x+i;
            dy=y+j;
            if(dx>=0&&dx<n&&dy>=0&&dy<m&&s[dx][dy]=='W'){
                hori.push(dx);
                para.push(dy);
            }
        }
    }
}
int main(){
    n=read();m=read();
    for(int i=0;i<n;i++){
        scanf("%s",s[i]);
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(s[i][j]=='W'){
                hori.push(i);
                para.push(j);
                while(!hori.empty()){
                    bfs(hori.front(),para.front());
                    hori.pop();para.pop();
                }
                ans++;
            }
        }
    }
    printf("%d",ans);
    return 0;
}
2024/10/6 21:54
加载中...