冲刺蓝桥杯-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;
}
相关推荐
MoRanzhi120311 小时前
106.正则问题(分治)
python·算法·正则表达式·蓝桥杯·递归·分治算法·字符串处理
MoRanzhi120315 小时前
122.四平方和(暴力枚举)
python·数学·算法·蓝桥杯·完全平方数·暴力枚举·四平方和定理
我命由我1234515 小时前
动火作业极简理解
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·学习方法
我命由我1234518 小时前
准入类与水平类职业资格
笔记·学习·职场和发展·产品运营·求职招聘·职场发展·产品经理
小 黄 鸡1 天前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
无敌贵点大王1 天前
嵌入式软件面试经(自用)
c语言·stm32·单片机·学习·mongodb·面试·职场和发展
程序 代码狂人1 天前
数据开发面试【问答完整版|带深挖追问 + 扩展回答】
面试·职场和发展
浅念-2 天前
动态规划:线性DP——多状态DP与子数组专题笔记
c++·笔记·算法·leetcode·职场和发展·动态规划·力扣
天真小巫2 天前
2026.10.14总结
职场和发展
鸥梨菌Honevid2 天前
UVM 面试高频:uvm_test_top 与 uvm_config_db 路径机制全解析
数据库·面试·职场和发展