题目描述:(边权只有0和1的最短路径问题)


可以走出矩阵
点权{走障碍物:1,不走障碍物:0}
最短路径=路径上障碍物的数量
双端队列:0的时候入队首,1的时候入队尾(只能出队一次,但可以入队很多次)
双端队列的前半段是全为0,后半段全为1.
bfs(实际上是一种迪杰斯特拉算法)迪杰斯特拉中的堆使用双端队列来实现
双端队列+广搜=简洁版的迪杰斯特拉算法

原题链接
视频讲解
#include<iostream>
#include<stdio.h>
#include<bits/stdc++.h>
#include<deque>
//双端队列的库函数 双端队列 即队列的两端都可以进行插入和删除操作
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
const int N = 10010;
bool g[N][N],st[N][N];

本文介绍了一种基于双端队列的简洁版迪杰斯特拉算法,用于解决边权只有0和1的最短路径问题。通过广搜结合双端队列的方式,优化了节点的遍历顺序,从而减少了计算时间。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



