hdu-2544 最短路(SPFA)
2024-09-18 19:49:19
SPFA整体过程
1.用一个队列queue
支撑。
2.dis[i]
表示目前x
到i
的距离。
3.b[i]
表示i
是否在q
中。
4.清空队列while(q.size()) q.pop();
。
5.初始化(把所有的dis[i]
设为INF
,再把dis[x]
设为0
,因为x
到x
的距离是0
)。
6.把当先点入队q.push(x);
。
7.取出队首,存在temp
中,b[队首]
= false
。
8.更新每一个点(dis[j] = min(dis[temp] + mp[temp][j],dis[j]);
)。
9.如果它没有在q
中则把它入队,并把b[i]
标记成true
。
10.如果队列不空则继续第7步。
code
#include <iostream>
#include <queue>
using namespace std;
#define inf 0x3f3f3f3f
int mp[105][105], dis[105], vis[105], num[105], n, m;
queue<int> q;
void SPFA(int x) {
while(q.size()) q.pop();//4
for (int i = 1; i <= n; i++) {//5
dis[i] = inf;
}
dis[x] = 0;
q.push(x);//6
while (!q.empty()) {
int temp = q.front();//7
q.pop();
for (int j = 1; j <= n; j++) {//8
if (dis[j] > mp[temp][j] + dis[temp]) {
dis[j] = dis[temp] + mp[temp][j];
if (!vis[j]) {//9
q.push(j);
vis[j] = 1;
num[j]++;
}
}
}
vis[temp] = 0;
}//10
}
int main() {
while (cin >> n >> m && n + m) {
int a, b, c;
for (int i = 1; i <= n; i++) {/赋予INF
for (int j = 1; j <= n; j++) {
if (i == j) {、、特判
mp[i][j] = 0;
} else {
mp[i][j] = inf;
}
}
}
for (int i = 1; i <= m; i++) {
cin >> a >> b >> c;
if (mp[a][b] > c) {
//无向图
mp[a][b] = mp[b][a] = c;
//有向图
//mp[a][b] = c;
}
}
SPFA(1);
cout << dis[n] << endl;
}
return 0;
}
完结散花!
最新文章
- 高性能 TCP &; UDP 通信框架 HP-Socket v3.4.1
- frp内网穿透配置
- 【java手记】------------------------java中转发和重定向区别
- Java:注解(元数据)
- FastReport调用Delphi中的人民币大写转换自定义函数
- VS2015 建立C++ dll库文件
- Silverlight C#动态设置样式
- rails3 Bundle简介
- 一句代码,更加优雅的调用KVO和通知
- Mahout
- .Net Memory -- Windbg基本命令
- 淘淘商城_day09_课堂笔记
- SICP-1.7-递归函数
- Nexus5/6刷 lineageos 过程
- jquery实现简单的搜索
- 南大算法设计与分析课程复习笔记(1) L1 - Model of computation
- 面试 15:顺时针从外往里打印数字(剑指 Offer 第 20 题)
- linux 下nginx
- js如何返回两个数的商的整数和余数部分?
- Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 问题分析
热门文章
- python 爬站长素材网页图片
- [OpenCV实战]26 基于OpenCV实现选择性搜索算法
- Maven项目中导入坐标依赖时报(Failure to transfer....)的错的问题
- SpringBoot 项目中配置多个 Jackson 的 ObjectMapper ,以及配置遇到的坑
- 洛谷P8567 真&#183;基础数论问题
- Dubbo 入门系列之快速部署一个微服务应用
- 命令行部署repmgr管理集群+switchover+切换测试
- 浅析 SeaweedFS 与 JuiceFS 架构异同
- maven打包失败 Cannot create resource output directory
- 一段简单的对TXT文件的操作代码