最短路算法c++(dijsktra,floyd,spfa)
floyd,复杂度
void floyd(int s,int e)//start end
{for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(g[i][j]>g[i][k]+g[k][j])g[i][j]=g[i][k]+g[k][j];cout<<g[s][e]<<endl;
}
dijsktra
struct Node{int to,dis;
};//携带边的终边,长度信息
vector<Node> g[maxn];
void add(int u,int v,int w)
{g[u].push_back({v,w});
}
int dis[maxn];//最短路数组
typedef pair<int,int> P;//将int,int型数据重命名为P
void dij(int start){memset(dis,0x3f,sizeof(dis));//初始最短路为infpriority_queue<P,vector<P>,greater<P> > q;//小根堆,堆顶是最小值dis[start]=0;//起点自己距离为0q.push(P(0,start));//起点入队,注意pair数组第一个是距离,第二个是点号while(!q.empty()){P p=q.top(); q.pop();//取出堆顶int u=p.second;if(dis[u]<p.first) continue;//祖传优化,同一点可能多次入队,如果答案更劣可以舍弃for(int i=0;i<g[u].size();i++){//邻接表遍历int v=g[u][i].to;if(dis[v]>dis[u]+g[u][i].dis){//松弛dis[v]=dis[u]+g[u][i].dis;//成功了就更新,入队q.push(P(dis[v],v));}}}return ;
}
spfa
bool spfa(int st)
{vector<int> dis(n,inf), vis(n, 0), cnt(n, 0);dis[st] = 0;vis[st] = 1;queue<int> q;q.emplace(st);while(!q.empty()){int u = q.front();q.pop();vis[u] = 0;for(auto [v, w] : g[u]){if(dis[v] > dis[u] + w){dis[v] = dis[u] + w;cnt[v] = cnt[u] + 1;if(cnt[v] >= n)return false;if(!vis[v]){q.emplace(v);vis[v] = 1;}}}}return true;
}
最短路算法c++(dijsktra,floyd,spfa)相关推荐
- 详解最短路算法模板(dijkstra+floyd+spfa)
1.Floyd_Warshall算法 核心思路:d[i][j] = min{d[i][j], d[i][k] + d[k][j]} 从i到j有两种路径,经过k点或是不经过k点,所以我们枚举k即可求所有 ...
- 【最短路算法】dijkstra,SPFA和folyd
在了解本知识点之前,首先要了解图的建立,也就是邻接表和邻接矩阵. 邻接矩阵适用于稠密图 邻接表适用于稀疏图 目录 单源最短路问题 dijkstra算法 SPFA算法 folyd算法 最小生成树 拓扑排 ...
- 最短路算法详解(Dijkstra/SPFA/Floyd)
转自:http://blog.csdn.net/murmured/article/details/19281031 一.Dijkstra Dijkstra单源最短路算法,即计算从起点出发到每个点的最短 ...
- 最短路算法 :Bellman-ford算法 Dijkstra算法 floyd算法 SPFA算法 详解
本文链接 :http://www.cnblogs.com/Yan-C/p/3916281.html . 在本文中因为邻接表在比赛中不如前向星好写,而且前向星效率并不低所以,本文的代码 存图只 ...
- 算法小讲堂之最短路算法(Floyd+bellman+SPFA+Dijkstra)
前言 如果你对图论相关知识一点也没有,那么建议您先去了解这些知识:https://acmer.blog.csdn.net/article/details/122310835,然后就可以快乐的学习最短路 ...
- 最短路算法----floyd算法
目录 1:Floyd算法的介绍 2:Floyd算法的代码展现 3:Floyd算法举例 1:Floyd算法的介绍 Floyd算法是属于最短路算法的一种,它是用来求多源最短路径,换句话来说就是求任意两个点 ...
- 坐在马桶上看算法:只有五行的Floyd最短路算法
坐在马桶上看算法:只有五行的Floyd最短路算法 此算法由Robert W. Floyd(罗伯特·弗洛伊德)于1962年发表在"Communications of the ACM" ...
- spfa算法_10行实现最短路算法——Dijkstra
今天是算法数据结构专题的第34篇文章,我们来继续聊聊最短路算法. 在上一篇文章当中我们讲解了bellman-ford算法和spfa算法,其中spfa算法是我个人比较常用的算法,比赛当中几乎没有用过其他 ...
- 图论最短路:Bellman-Ford与其优化SPFA算法的一点理解
文章目录 前言 一.对Bellman-Ford的深入理解 1. Bellman-Ford有什么用? 2. 什么是松弛操作? 3. Bellman-Ford的k次迭代意义? 4. 一个重要定理 5. 对 ...
- 【啊哈!算法】算法6:只有五行的Floyd最短路算法
暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有 ...
最新文章
- POJ 2411 Mondriaan#39;s Dream (dp + 减少国家)
- 安徽师范大学计算机专业导师,安徽师范大学数学计算机科学学院导师介绍:罗永龙...
- matlab 显示多幅图像,运用matlab实现循环语句中的多幅图像显示
- 大学生试用期辞退之没有工钱
- adoquery.parameters流化
- 转Oracle Data Guard 理论知识3-自动裂缝检测和解决
- python和对象复习_python 面向对象基础和高级复习
- 你了解HTTPS,但你可能不了解X.509
- HDU1273 漫步森林【水题】
- spring-boot推送实时日志到前端页面显示
- Jave_erhui
- 数据库课程设计—超市零售信息管理系统(Python实现)
- Android 中指纹识别的使用
- 【和UI斗智斗勇的日子】如何实现一个类似哈罗单车APP主页打车模块的卡片式切的View
- 信贷、贷款行业如果利用运营商大数据精准获客?
- Leetcode 1024 - 视频拼接
- Google Glass: 未来不遥远
- 连接mongodb提示目标计算机拒绝,MongoDB 由于目标计算机积极拒绝,无法连接 2014-07-25T11:00:48.634+0...
- RabbitMQ高级之如何保证消息可靠性?
- 集成学习(voting)