萌新求调,4WA,6AC,#3,#9,#10,#11

P1141 01迷宫

chl147259 @ 2024-02-01 16:58:45

#include<bits/stdc++.h>
using namespace std;
int minn=1145141,n,a,b,k[2050],js=0,tot=0,dx[4]={1,0,-1,0},m,dy[4]={0,1,0,-1};
string s[1050];
struct op{
    int x,y;
};
queue<op>q;
int p[1005][21005];
void bfs(){
    while(q.size()!=0){
        op t=q.front();
        q.pop();
        //if(tot==1)
            //cout<<t.x<<" "<<t.y<<endl;

        for(int i=0;i<=3;i++){
            int xx=t.x+dx[i],yy=t.y+dy[i];

            if(xx>=0&&xx<n&&yy>=0&&yy<n&&((s[t.x][t.y]=='1'&&s[xx][yy]=='0')||(s[t.x][t.y]=='0'&&s[xx][yy]=='1'))&&!p[xx][yy]){

                p[xx][yy]=tot;
                js++;
                q.push({xx,yy});
            }
        }
    }
}

int main(){
    //freopen("P1141_1.in","r",stdin);
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>s[i];
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(!p[i][j]){
                tot++;
                js=1;
                p[i][j]=tot;
                q.push({i,j});
                bfs();
                k[tot]=js;
            //  cout<<i<<" "<<j<<" "<<k[tot]<<" "<<tot<<endl;
            }
        }
    }
    for(int i=1;i<=m;i++){
        int ddx,ddy;
        cin>>ddx>>ddy;
        cout<<k[p[ddx-1][ddy-1]]<<endl;
    }
    //cout<<js;
    return 0;
}/*
8 4
10010011
01100100
10010011
01011011
10001000
00011011
00101000
00000010
1 2
8 6
6 2
4 3
*/

|