不会BFS求助
  • 板块P1141 01迷宫
  • 楼主zldy
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/11/10 11:39
  • 上次更新2023/10/27 03:32:57
查看原帖
不会BFS求助
601674
zldy楼主2022/11/10 11:39
#include<bits/stdc++.h>
using namespace std;
int a[1002][1002];
bool f[1002][1002];
struct data{
    int x,y;
};
queue<data> q;
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j];
    while(m--){
        memset(f,0,sizeof(f));
        int x,y;
        cin>>x>>y;
        f[x][y]=true;
        q.push(data{x,y});
        while(!q.empty()){
            data tmp=q.front();
            if(a[tmp.x-1][tmp.y]!=a[tmp.x][tmp.y]&&!f[tmp.x-1][tmp.y]){
                q.push(data{tmp.x-1,tmp.y});
                f[tmp.x-1][tmp.y]=true;
            }
            if(a[tmp.x+1][tmp.y]!=a[tmp.x][tmp.y]&&!f[tmp.x+1][tmp.y]){
                q.push(data{tmp.x+1,tmp.y});
                f[tmp.x+1][tmp.y]=true;
            }
            if(a[tmp.x][tmp.y-1]!=a[tmp.x][tmp.y]&&!f[tmp.x][tmp.y-1]){
                q.push(data{tmp.x,tmp.y-1});
                f[tmp.x][tmp.y-1]=true;
            }
            if(a[tmp.x][tmp.y+1]!=a[tmp.x][tmp.y]&&!f[tmp.x][tmp.y+1]){
                q.push(data{tmp.x,tmp.y+1});
                f[tmp.x][tmp.y+1]=true;
            }
            q.pop();
        }
        int ans=0;
        for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(f[i][j]) ans++;
        cout<<ans<<"\n";
    }
    return 0;
}
2022/11/10 11:39
加载中...