40分求助

P1141 01迷宫

Fishen @ 2024-10-19 09:19:37

用广搜写的记录

#include<bits/stdc++.h>
using namespace std;
int n,m,a[1100][1100],ans;
int fx[4][2]={1,0,-1,0,0,1,0,-1};
struct Node{
    int x,y;
};
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            char g;cin>>g;
            a[i][j]=g-'0';
        }
    }
    while(m--){
        ans=0;
        int x1,y1;bool vis[1001][1001]={};
        cin>>x1>>y1;
        queue<Node>q;
        q.push({x1-1,y1-1});
        while(!q.empty()){
            Node p=q.front();
            q.pop();

            for(int i=0;i<4;i++){
                int xx=p.x+fx[i][0],yy=p.y+fx[i][1];
                if(xx>=0&&xx<n&&yy>=0&&yy<n&&
                vis[xx][yy]==0&&a[xx][yy]!=a[p.x][p.y]){
                    vis[xx][yy]=1;
                    q.push({xx,yy});
                    ans++;
                }
            }
        }
        cout<<ans<<endl;
    }

    return 0;
}

by Fishen @ 2024-10-19 09:20:07

玄关


|