单源最短路(spfa+Dijkstra)附数据
choose表示选择的算法~
题目戳我~
1 #include <cstdio>2 #include <cstring>3 4 #define INF 21474836475 #define N 10000016 7 long long n,m,f,nxt[N],fst[N],v[N],e[N],cnt = 0,dis[N],queue[N];8 9 int t,w;bool inqueue[N] = {0}; //Dijkstra10 11 bool book[1000001] = {0}; //spfa12 13 void Add(int a,int b,int c){14 cnt++;15 if(a == f)dis[b] = c;16 e[cnt] = b;17 nxt[cnt] = fst[a];18 fst[a] = cnt;19 v[cnt] = c;20 }21 int main()22 {23 memset(fst,-1,sizeof(fst));24 memset(nxt,-1,sizeof(nxt));25 scanf("%lld %lld %lld",&n,&m,&f);26 for(int i = 0;i <= n + 10;i++)27 dis[i] = INF;28 for(int i = 1;i <= m;i++){29 long long a,b,c;30 scanf("%lld %lld %lld",&a,&b,&c);31 Add(a,b,c);32 }33 34 int choose = 2;35 36 if(choose == 1){37 //Dijkstra38 dis[f] = 0;39 book[f] = 0;40 for(int i = 1;i <= n;i++){41 int Mn = INF,x;42 for(int j = 1;j <= n;j++)43 if(dis[j] < Mn && !book[j])44 Mn = dis[j],x = j;45 book[x] = 1;46 for(int k = fst[x];k != -1;k = nxt[k])47 if(v[k] + dis[x] < dis[e[k]])48 dis[e[k]] = v[k] + dis[x]; 49 }50 }51 if(choose == 2){52 //spfa53 memset(inqueue,0,sizeof(inqueue));54 t = w = 1;55 queue[1] = f;56 inqueue[f] = 1;57 dis[f] = 0;58 while(t <= w){ 59 inqueue[queue[t]] = 0;60 for(int j = fst[queue[t]];j != -1;j = nxt[j]){61 if(dis[queue[t]] + v[j] <= dis[e[j]]/*一定为"<="*/){62 dis[e[j]] = dis[queue[t]] + v[j];63 if(!inqueue[e[j]]){64 w++;65 queue[w] = e[j];66 inqueue[e[j]] = 1;67 }68 } 69 }70 t++;71 }72 }73 74 for(int i = 1;i <= n;i++){75 //printf("%lld %c %lld : %lld\n",f,26,i,dis[i]);76 printf("%d ",dis[i]);77 }78 79 return 0;80 }81 /*82 ---data---83 84 4 5 185 1 4 986 2 4 687 1 2 588 4 3 889 1 3 790 ans:91 0 5 7 992 93 4 6 194 1 2 295 2 3 296 2 4 197 1 3 598 3 4 399 1 4 4 100 ans: 101 0 2 4 3 102 103 6 9 1 104 1 2 1 105 1 3 12 106 2 3 9 107 2 4 3 108 3 5 5 109 4 3 4 110 4 5 13 111 4 6 15 112 5 6 4 113 ans: 114 0 1 8 4 13 17 115 */
转载于:https://www.cnblogs.com/frankying/p/6581967.html
单源最短路(spfa+Dijkstra)附数据相关推荐
- uva 10099 The Tourist Guide(单源最短路/spfa/dijkstra)
题目: 链接:点击打开链接 题意: 思路: 代码: #include <iostream> #include <cstring> #include <cstdio> ...
- 单源最短路之Dijkstra算法代码模板
常用算法代码模板总结 目录 注意事项 数组定义 实现步骤 练习例题:Dijkstra求最短路 注意事项 用来求单源最短路 所有边权都是正数,时间复杂度O(n^2) 可通过堆优化达到时间复杂度为O(ml ...
- 【单源最短路】Dijkstra算法求最短路
题目描述 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值. 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1. 输入格式 第一 ...
- 单源最短路 SPFA 算法模板
简介 在图论中,最短路是十分重要的一部分,在很多问题中都有涉及 而现在所讲的 SPFA 算法是十分优秀的算法,时间复杂度为 O(k∗E)O(k*E) 其中 EE 是图的边数,而 kk 是一个常数,一般 ...
- 单源最短路径(spfa,Dijkstra, bellman-ford)
目录 Dijkstra 原理:基于贪心. 为什么 Dijkstra 不能处理有负边的情况 Bellman-ford 原理:动态规划, 实质见floyd的另一篇博客 1,能找负环, 2,有变数限制的最短 ...
- HDU 2066 一个人的旅行(单源最短路SPFA)
Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还 ...
- 单源最短路 Dijkstra算法 和 SPFA算法
单源最短路 •从一个点出发,到达其他顶点的最短路径的长度. •基本操作:松弛 •d[u]+map[u, v]< d[v]这样的边(u,v)称为紧的(tense),可以对它进行松弛(relax): ...
- dijkstra邻接表_[力扣743] 带权邻接表的单源最短路
题目链接 743. 网络延迟时间 题目描述 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源 ...
- CSP认证201609-4 交通规划[C++题解]:最短路径树、dijkstra求单源最短路、递推思想
题目分析 来源:acwing 分析: 这题是最短路树.保持原图中所有点到根结点的最短距离不变,然后在原图中选择一些边,使所有点连通的最短路是多长. 最短路径树,是一种使用最短路径算法生成的数据结构树. ...
- 【HDU - 2112】 HDU Today(dijkstra单源最短路 + map转换)
题干: HDU Today Time Limit : 15000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Tota ...
最新文章
- RTSP流媒体数据传输的两种方式(TCP和UDP)
- Python教程:json中encode与decode区别
- 2021牛客多校5 - Double Strings(dp+组合数学)
- CF755G PolandBall and Many Other Balls(多项式/倍增fft)
- 洛谷P6097:【模板】子集卷积(FWT)
- 网际控制报文协议icmp_网络中的ICMP(Internet控制消息协议)
- 32位存储环境下整数范围为什么是[-2^31,2^31-1]?
- 局域网聊天的本质是函数
- 安徽中职计算机专业对口高考,安徽对口高考和普通高考有什么区别?
- winform Combobox出现System.Data.DataRowView的解决的方法
- 注意!恶意NPM包正在安装勒索软件和密码窃取木马
- idea装vue插件之后没有代码提示怎么办呢
- 17ー03ー20 日本語勉強
- SAP FI月结 坏账转移及计提准备 Doubtful Receivables Bad Debts
- 小技巧(8)pimple模式
- CAD能打开PDF格式吗?这样做可以快速实现
- Java调用Python下载网页
- 九章量子计算机应用,“九章”量子计算机这么牛,到底有什么用? |【经纬低调分享】...
- 在win10上搭建完整Kubernetes、Istio、Prometheus、Grafana和Knative
- 学习JS,实现自动打字机动效
热门文章
- TypeError: tuple indices must be integers, not tuple是怎么回事
- 订个票,显示吾是何等的脑残
- 空间可能与时间一样,也是不可逆转的
- 管理感悟:出了事故,关键是想想自己哪里能改进
- 析构语意学(Semantics of Destruction)
- 未定义数组索引:_数据结构-数组
- C# 图片exif信息
- java map size 不准确_java1.7以前ConcurrentHashMap的size方法
- mysql连接 xorm_使用go xorm来操作mysql的方法实例
- 逻辑回归python sigmoid(z)_python 实现逻辑回归