
【SPFA】桐人的约会
问题分析:我们需要找到从1号街区到N号街区的最短路径中的最大值。这个问题可以通过多次剪枝最短路径中的边来解决。 SPFA算法:使用SPFA算法来处理有向图中的单源最短路径问题。SPFA算法在每次处理一个节点时,将其未处理的邻居加入队列中,重复这个过程直到队列为空。 剪枝最短路径:首先运行SPFA算法,找到从1号到各节点的最短距离。然后,找出所有属于这些最短路径的边,并将这些边从图中去掉。重复这个过程,直到没有更多的边可以剪枝为止。 读取输入:读取街区数目N和道路数目M,然后读取每条道路的信息。 初始化邻接表:使用邻接表存储每个节点的邻居和边的信息。 SPFA算法:运行SPFA算法,计算从1号街区到各节点的最短距离。 剪枝最短路径:通过多次运行SPFA算法,剪枝最短路径中的边,直到没有更多的边可以剪枝为止。 输出结果:输出从1号街区到N号街区的最大最短路径的时间。
发布日期:2021-05-07 22:48:54
浏览次数:20
分类:精选文章
本文共 1645 字,大约阅读时间需要 5 分钟。
为了解决这个问题,我们需要找到从1号街区到N号街区的所有可能的最短路径中最长的那条路径。亚丝娜会选择最短的路径,但我们需要找出在这些路径中最长的那条。
方法思路
解决代码
#include#include #include #include using namespace std;int n, m;int dist[1001];int inqueue[1001];int out[1001];int adj[1001][1001];int edge_count = 0;struct Edge { int to, weight, next;};void spfa(int x) { int u, v, w, t, len = 0; queue q; for (int i = 1; i <= n; ++i) dist[i] = -1; dist[1] = 0; q.push(1); inqueue[1] = 1; while (!q.empty()) { u = q.front(); q.pop(); inqueue[u] = 0; for (int i = out[u]; i; ++i) { v = adj[u][i]; w = adj[u][i].weight; if (dist[v] == -1 || dist[v] > dist[u] + w) { dist[v] = dist[u] + w; if (inqueue[v] == 0) q.push(v); inqueue[v] = 1; } } }}int main() { scanf("%d %d", &n, &m); out[0] = m + 1; for (int i = 1; i <= m; ++i) { int a, b, c; scanf("%d %d %d", &a, &b, &c); adj[a][++edge_count] = {b, c, out[b]}; adj[b][++edge_count] = {a, c, out[a]}; } spfa(0); int ans = dist[n]; return ans;}
代码解释
这个方法确保了我们在多次剪枝后,找到了最长的最短路径,从而解决了问题。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月16日 11时15分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mybatis入门之增删改查
2019-03-06
[菜鸟的设计模式之旅]观察者模式
2019-03-06
Spring-继承JdbcDaoSupport类后简化配置文件内容
2019-03-06
Java基础IO流(一)
2019-03-06
Hibernate入门(四)---------一级缓存
2019-03-06
MySQL事务(学习笔记)
2019-03-06
一个web前端开发者的日常唠叨
2019-03-06
内存分配-slab分配器
2019-03-06
技术写作技巧分享:我是如何从写作小白成长为多平台优秀作者的?
2019-03-06
Jupyter Notebook 暗色自定义主题
2019-03-06
[Python学习笔记]组织文件
2019-03-06
DCL之单例模式
2019-03-06
什么?你竟然还没有用这几个chrome插件?
2019-03-06
将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定
2019-03-06
【俗话说】换个角度理解TCP的三次握手和四次挥手
2019-03-06
基于Redo Log和Undo Log的MySQL崩溃恢复流程
2019-03-06
从RocketMQ的Broker源码层面验证一下这两个点
2019-03-06
如何正确的在项目中接入微信JS-SDK
2019-03-06
初探WebAssembly
2019-03-06
关于Objects类的getClass方法为什么可以得到子类的地址的思考
2019-03-06