冲刺蓝桥杯-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;
}
相关推荐
8Qi814 小时前
LeetCode 494:目标和(Target Sum)—— 题解 ✅
算法·leetcode·职场和发展·动态规划·01背包
这料鬼有毒17 小时前
二刷hot100-78.子集
算法·leetcode·职场和发展
li星野20 小时前
FAISS 详解:原理、使用与面试指南——向量检索的基石
面试·职场和发展·faiss
mifengxing20 小时前
LeetCode热题100——字母异位词分组
java·算法·leetcode·职场和发展·哈希表·hot100
I Promise3421 小时前
智驾APA_HPA可行驶区域检测算法工程师面试问题整理可参考
算法·面试·职场和发展
迈巴赫车主1 天前
蓝桥杯21241灯塔java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯·动态规划
酉鬼女又兒1 天前
零基础入门计算机网络可靠传输:从基本概念到三大实现机制(停止 - 等待 / 回退 N 帧 / 选择重传)全解析
网络·网络协议·计算机网络·考研·职场和发展·计算机外设·求职招聘
凯瑟琳.奥古斯特1 天前
力扣1003题C++解法详解
开发语言·c++·算法·leetcode·职场和发展
大学竞赛君1 天前
第十六届蓝桥杯大赛软件赛决赛 Python 大学 A 组
python·职场和发展·蓝桥杯
luweis1 天前
企智孪生 ETA (6.3 数字人格 (Digital Persona) 的构建工程、6.4 交互触点:全场景嵌入策略)【杭州联保致新科技有限公司 卢伟舜】
人工智能·程序人生·机器学习·自然语言处理·职场和发展·知识图谱·学习方法