70分求解
查看原帖
70分求解
1531826
tianyuqi2012楼主2024/10/23 19:58
#include<bits/stdc++.h>
using namespace std;
char mp[505][505];
int n,m,a,b;
int dx[4]= {0,0,1,-1};
int dy[4]= {1,-1,0,0};
int vis[505][505];
struct node {
    int x,y,s;
} que[105*105];
void bfs(int nx,int ny) {
    queue<node> q;
    node a= {nx,ny,0};
    q.push(a);
    vis[nx][ny]=1;
    while(!q.empty()) {
        node p=q.front();
        q.pop();
        if(mp[p.x][p.y]=='b') {
            cout<<p.s<<endl;
            return;
        }
        for(int i=0; i<4; i++) {
            int nx=p.x+dx[i];
            int ny=p.y+dy[i];
            if(vis[nx][ny]==0&&nx<=n&&nx>=1&&ny<=m&&ny>=1) {
                node ep={nx,ny,p.s+1};
                q.push(ep);
                vis[nx][ny]=1;
            }
        }
    }
}
int main() {
    int x1,y1;
    cin>>n>>m>>a>>b;
    for(int i=1;i<=a;i++){
        cin>>x1>>y1;
        mp[x1][y1]='b';
    }
    for(int i=1;i<=b;i++){
        memset(vis,0,sizeof(vis));
        cin>>x1>>y1;
        bfs(x1,y1);
    }
    return 0;
}
2024/10/23 19:58
加载中...