60pts,我太蒻了,找不出错QWQ
查看原帖
60pts,我太蒻了,找不出错QWQ
908638
chair0114楼主2023/8/23 07:27

求调/_ \

#include<iostream>
using namespace std;
const int QWQ = 1e5 + 10;
int  n,m,a,b,x,y,xx,yy,front = 1,rear;
struct node{
    int x,y;
}que[QWQ];
bool f[1005][1005];
int date[1005][1005];
int dx[5] = {0,1,0,-1,0},
    dy[5] = {0,0,1,0,-1};
void bfs();
int main(){
    cin>>n>>m>>a>>b;
    for(int i = 1;i <= a; ++i){
        cin>>x>>y;
        que[++rear].x = x;
        que[rear].y = y;
        f[x][y] = 1;
        date[x][y] = 0;
    } 
    bfs();
    for(int i = 1;i <= b; ++i){
        cin>>xx>>yy;
        cout<<date[xx][yy]<<endl;
    } 
    return 0;
}
void bfs(){
//  memset(f,0,sizeof(f));
    while(front <= rear){
        for(int i = 1;i <= 4; ++i){
            int t1 = que[front].x + dx[i];
            int t2 = que[front].y + dy[i];
            if(t1 < 1 || t1 > n || t2 < 1 || t2 > m || f[t1][t2]) continue;
            f[t1][t2] = 1;
            que[++rear].x = t1;
            que[rear].y = t2;
            date[t1][t2] = date[que[front].x][que[front].y] + 1;
            //cout<<date[t1][t2]<<endl;
        }
        ++front;
    }
}
2023/8/23 07:27
加载中...