求助,样例能过但是只有10分

P1141 01迷宫

白开水不加糖 @ 2024-02-19 17:05:31

#include<cstdio>
#include<queue>
using namespace std;
struct Local{
    int x,y;
};
int main(){
    int n,m;
    scanf("%d%d",&n,&m);
    getchar();
    char map[1005][1005];
    bool visited[1005][1005];
    //上右下左 
    int move[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            scanf("%c",&map[i][j]);
        }
        getchar();
    }
    for(int index=0;index<m;index++){
        for(int k=1;k<=n;k++){
            for(int j=1;j<=n;j++){
                visited[k][j]=false;
            }
        }
        int x,y;
        long long cnt=1;
        scanf("%d%d",&x,&y);
        queue<Local> q;
        Local lo;
        lo.x=x;
        lo.y=y;
        q.push(lo);
        visited[x][y]=true;
        while(!q.empty()){
            Local cur=q.front();
            q.pop();
            for(int i=0;i<4;i++){
                int tx=cur.x+move[i][0];
                int ty=cur.y+move[i][1];
                if(tx>0&&ty>0&&tx<=n&&ty<=n&&!visited[tx][ty]){
                    if(map[cur.x][cur.y]!=map[tx][ty]){
                        cnt++;
                        visited[tx][ty]=true;
                        Local t;
                        t.x=tx;t.y=ty;
                        q.push(t);
                    }
                }
            }
        } 
        printf("%lld\n",cnt);
    }
    return 0;
} 

by 白开水不加糖 @ 2024-02-19 17:06:18

除了时间超时还有啥问题吗


|