冲刺蓝桥杯-BFS板块(第八天)

多源BFS问题

cpp 复制代码
//多源BFS在开始BFS之前就将两个感染源入队
#include <bits/stdc++.h>

using namespace std;

#define x first
#define y second

typedef pair<int,int> PII;

const int N=510;

int a,b,n,m;
int dist[N][N];
queue<PII> q;

int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};

void bfs(){
    while(!q.empty()){
        auto t = q.front();
        q.pop();
        
        for(int i=0;i<4;i++){
            int a=t.x+dx[i],b=t.y+dy[i];
            if(a<1||a>n||b<1||b>m)continue;
            if(dist[a][b]>=0)continue;
            
            dist[a][b]=dist[t.x][t.y]+1;
            q.push({a,b});
        }
        
    }
}


int main(){
    cin >> n >> m >> a >>b;
    memset(dist,-1,sizeof dist);
    while(a--){
        int x,y;
        cin >> x >> y;
        q.push({x,y});//bfs之前将起点(感染源)入队
        dist[x][y]=0;
    }
    bfs();
    
    //bfs扫完直接输入领主的位置,直接输出它在第几轮被感染
    while(b--){
        int x,y;
        cin >> x >> y;
        cout << dist[x][y] << endl;
    }
    
    return 0;
}
相关推荐
仰泳的熊猫2 小时前
题目2086:蓝桥杯算法提高VIP-最长公共子序列
数据结构·c++·算法·蓝桥杯·动态规划
2501_924878737 小时前
VOC新规下汽车内饰应对指南:福尔蒂低气味除醛母粒适配广汽埃安Q4项目
汽车·线性回归·宽度优先
2301_8008951010 小时前
BFS--备战蓝桥杯版h
算法·蓝桥杯·宽度优先
郝学胜-神的一滴11 小时前
力扣86题分隔链表:双链表拆解合并法详解
开发语言·数据结构·算法·leetcode·链表·职场和发展
快快起来写代码11 小时前
【leetcode】容器中水的容量最小/大面积
算法·leetcode·职场和发展
xiaobaibai15311 小时前
同标‘UV稳定‘,福尔蒂母粒在广东户外建材中寿命延2.3倍:光老化测试对比
线性回归·宽度优先·uv
zz345729811311 小时前
C语言基础之蓝桥杯
c语言·算法·蓝桥杯
鱼骨不是鱼翅11 小时前
个人简历面试复习-----rabbitmq篇(一)
面试·职场和发展·rabbitmq
仰泳的熊猫11 小时前
题目1882:蓝桥杯2017年第八届真题-k倍区间
数据结构·c++·算法·蓝桥杯