最短路径算法(跟新SPFA,Ford)
//以城市路为蓝本介绍算法
1381:城市路(Dijkstra)
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 4517 通过数: 1306
【题目描述】
罗老师被邀请参加一个舞会,是在城市n,而罗老师当前所处的城市为1,附近还有很多城市2~n-1,有些城市之间没有直接相连的路,有些城市之间有直接相连的路,这些路都是双向的,当然也可能有多条。
现在给出直接相邻城市的路长度,罗老师想知道从城市1到城市n,最短多少距离。
【输入】
输入n, m,表示n个城市和m条路;
接下来m行,每行a b c, 表示城市a与城市b有长度为c的路。
【输出】
输出1到n的最短路。如果1到达不了n,就输出-1。
【输入样例】
- 5 5
- 1 2 20
- 2 3 30
- 3 4 20
- 4 5 20
- 1 5 100
【输出样例】
- 90
【提示】
【数据规模和约定】
1≤n≤2000
1≤m≤10000
0≤c≤10000
【来源】
SPAF:
- #include<bits/stdc++.h>
- using namespace std;
- struct node
- {
- int next,to,val;
- }edge[];
- int h[],num=;
- void add_edge(int from,int to,int val)
- {
- num++;
- edge[num].to=to;
- edge[num].val=val;
- edge[num].next=h[from];
- h[from]=num;
- }
- int dis[];
- bool used[];
- int Q[],head,tail;
- int main()
- {
- int n,m;
- cin>>n>>m;
- for(int i=;i<=m;i++)
- {
- int x,y,z;
- cin>>x>>y>>z;
- add_edge(x,y,z);
- add_edge(y,x,z);
- }
- memset(dis,0x3f,sizeof(dis));
- dis[]=;
- Q[]=;head=;tail=;used[]=true;
- while(head<=tail)
- {
- //1.取出头结点
- int from=Q[head];
- head++;
- used[from]=false;
- //2.拓展新的尾结点
- for(int j=h[from];j!=;j=edge[j].next)
- {
- int to=edge[j].to;
- int val=edge[j].val;
- if(dis[to]>dis[from]+val)
- {
- dis[to]=dis[from]+val;
- if(!used[to])
- {
- tail++;
- Q[tail]=to;
- used[to]=true;
- }
- }
- }
- }
- if(dis[n]==0x3f3f3f3f)
- cout<<-;
- else
- cout<<dis[n];
- return ;
- }
Ford:
- #include<bits/stdc++.h>
- using namespace std;
- struct node
- {
- int from,to,val;
- }edge[];
- int num;
- void add_edge(int from,int to,int val)
- {
- num++;
- edge[num].from=from;
- edge[num].to=to;
- edge[num].val=val;
- }
- int dis[];
- int main()
- {
- int n,m;
- cin>>n>>m;
- for(int i=;i<=m;i++)
- {
- int x,y,z;
- cin>>x>>y>>z;
- add_edge(x,y,z);
- }
- memset(dis,0x3f,sizeof(dis));
- dis[]=;
- for(int i=;i<=n;i++)
- {
- for(int j=;j<=num;j++)
- {
- int from=edge[j].from;
- int to=edge[j].to;
- int val=edge[j].val;
- dis[to]=min(dis[to],dis[from]+val);
- dis[from]=min(dis[from],dis[to]+val);
- }
- }
- if(dis[n]==0x3f3f3f3f)
- cout<<-;
- else
- cout<<dis[n];
- return ;
- }
//~~可能并不能过。。。。~~
最短路径算法(跟新SPFA,Ford)的更多相关文章
- 图论最短路径算法总结(Bellman-Ford + SPFA + DAGSP + Dijkstra + Floyd-Warshall)
这里感谢百度文库,百度百科,维基百科,还有算法导论的作者以及他的小伙伴们...... 最短路是现实生活中很常见的一个问题,之前练习了很多BFS的题目,BFS可以暴力解决很多最短路的问题,但是他有一定的 ...
- 几大最短路径算法比较(Floyd & Dijkstra & Bellman-Ford & SPFA)
几个最短路径算法的比较:Floyd 求多源.无负权边(此处错误?应该可以有负权边)的最短路.用矩阵记录图.时效性较差,时间复杂度O(V^3). Floyd-Warshall算法(Floyd ...
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
几大最短路径算法比较 转自:http://blog.csdn.net/v_july_v/article/details/6181485 几个最短路径算法的比较: Floyd 求多 ...
- (最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍
这一篇博客以一些OJ上的题目为载体.整理一下最短路径算法.会陆续的更新... 一.多源最短路算法--floyd算法 floyd算法主要用于求随意两点间的最短路径.也成最短最短路径问题. 核心代码: / ...
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较(转)
几大最短路径算法比较 几个最短路径算法的比较:Floyd 求多源.无负权边(此处错误?应该可以有负权边)的最短路.用矩阵记录图.时效性较差,时间复杂度O(V^3). Floy ...
- Johnson 全源最短路径算法
解决单源最短路径问题(Single Source Shortest Paths Problem)的算法包括: Dijkstra 单源最短路径算法:时间复杂度为 O(E + VlogV),要求权值非负: ...
- 最短路径算法——Dijkstra,Bellman-Ford,Floyd-Warshall,Johnson
根据DSqiu的blog整理出来 :http://dsqiu.iteye.com/blog/1689163 PS:模板是自己写的,如有错误欢迎指出~ 本文内容框架: §1 Dijkstra算法 §2 ...
- Python小白的数学建模课-16.最短路径算法
最短路径问题是图论研究中的经典算法问题,用于计算图中一个顶点到另一个顶点的最短路径. 在图论中,最短路径长度与最短路径距离却是不同的概念和问题,经常会被混淆. 求最短路径长度的常用算法是 Dijkst ...
- Johnson 全源最短路径算法学习笔记
Johnson 全源最短路径算法学习笔记 如果你希望得到带互动的极简文字体验,请点这里 我们来学习johnson Johnson 算法是一种在边加权有向图中找到所有顶点对之间最短路径的方法.它允许一些 ...
- Floyd-Warshall 全源最短路径算法
Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Probl ...
随机推荐
- 在移动硬盘中安装win10和macos双系统
本文通过在SSD移动硬盘中安装win10和macos双系统,实现操作系统随身携带 小慢哥的原创文章,欢迎转载 目录 ▪ 目标 ▪ 准备工作 ▪ Step1. 清空分区,转换为GPT ▪ Step2. ...
- vue2.0 与 vue3.0 配置的区别
提示:要了解vue2.0与vue3.0区别,首先你要熟悉vue2.0 从最明显最简单的开始 项目目录结构 可以明显的看出来,vue2.0与3.0在目录结构方面,有明显的不同(vue3.0我是安装了cs ...
- CSPS模拟 52
我貌似曾经说过我是个只会做水题的巨型辣鸡.. 这次证明我水题都不会做.. T1 平均数 区间数$n^2$ 枚举是不可能了 可是好像没有无用的计算量.. 刚想到这里,此时开考15min 看见天皇比手势说 ...
- svg路径蒙版动画
svg路径蒙版动画,是比较实用的一种动画效果,能够绘制如下图所示的动画. 接下来细说这样的动画是如何做成的: 1.准备工作 2.SVG路径动画 3.SVG路径蒙版动画 4.复杂图形的编辑技巧 1.准备 ...
- [转载]2.4 UiPath循环活动While的介绍和使用
一.While循环的介绍 先判断条件是否满足, 如果满足, 再执行循环体, 直到判断条件不满足, 则跳出循环 二.While循环在UiPath中的使用 1. 打开设计器,在设计库中新建一个Flowch ...
- svg自适应写法
svg自适应写法<pre><!DOCTYPE html><html lang="en"> <head> <meta chars ...
- php mkdir不能创建文件夹的原因
php mkdir不能创建文件夹的原因 1 权限问题2 open_basedir设置问题 参考方法http://newmiracle.cn/?p=2896
- 读《MySQL必知必会》我学到了什么?
前言 最近在写项目的时候发现自己的SQL基本功有些薄弱,遂上知乎查询MYSQL关键字,期望得到某些高赞答案的指点,于是乎发现了 https://www.zhihu.com/question/34840 ...
- 每天一道算法题-leetcode136-只出现一次的数字
前言 打卡第一天 2019.10.26日打卡 算法,即解决问题的方法.同一个问题,使用不同的算法,虽然得到的结果相同,但是耗费的时间和资源是不同的.这就需要我们学习算法,找出哪个算法更好. 大家都知道 ...
- Sturts2整合Spring报错:org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml];
十一月 17, 2019 1:11:44 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRul ...