求助 玄关
  • 板块灌水区
  • 楼主Eason_lyx
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/11 21:28
  • 上次更新2024/9/12 13:00:52
查看原帖
求助 玄关
930718
Eason_lyx楼主2024/9/11 21:28

这题
我的代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,cur;
int f[1005][1005];
int ans[100005];
struct M{
  int x,y;
};
char mmap[1005][1005];
int dx[5]={0,1,0,0,-1};
int dy[5]={0,0,1,-1,0};
void bfs(int x,int y){
    //cout<<x<<' '<<y<<endl;
    queue<M>q;
    cur++;
    q.push({x,y});
    ans[cur]++;
    f[x][y]=cur;
    M tmp;
    while(!q.empty()){
        tmp=q.front();
        q.pop();
        for(int i=1;i<=4;i++){
            int nx=tmp.x+dx[i];
            int ny=tmp.y+dy[i];
            if(f[nx][ny]||mmap[nx][ny]==mmap[tmp.x][tmp.y]||nx<1||nx>n||ny<1||ny>n)
                continue;
            tmp.x=nx;
            tmp.y=ny;
            q.push(tmp);
            f[nx][ny]=cur;
            ans[cur]++;
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>mmap[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(f[i][j])continue;
            bfs(i,j);
        }
    }
    //for(int i=1;i<=n;i++,puts(""))
        //for(int j=1;j<=n;j++)
            //cout<<f[i][j]<<' ';
    int q,w;
    for(int i=1;i<=m;i++){
        cin>>q>>w;
        cout<<ans[f[q][w]]<<endl;
    }
    return 0;
}
2024/9/11 21:28
加载中...