SPFA 最短路径打印方法
- #include <iostream>
- #include <cstdlib>
- #include <cstdio>
- #include <algorithm>
- #include <vector>
- #include <queue>
- #include <cmath>
- #include <cstring>
- using namespace std;
- #define INF 0xfffffff
- #define maxn 40
- struct Edge
- {
- int e, w;
- Edge(int e=,int w=) : e(e), w(w) {}
- };
- int Path[maxn], n, dist[maxn];
- bool vis[maxn];
- vector<Edge> G[maxn];
- void Spfa(int Star,int End)
- {
- Edge P, Pn;
- dist[Star] = ;
- queue<Edge> Q;
- Q.push(Edge(Star,));
- while( !Q.empty() )
- {
- P = Q.front();
- Q.pop();
- vis[P.e] = true;
- int len = G[P.e].size();
- for(int i=; i<len; i++)
- {
- Pn = G[P.e][i];
- if(dist[Pn.e] > dist[P.e] + Pn.w)
- {
- dist[Pn.e] = dist[P.e] + Pn.w;
- Path[Pn.e] = P.e;
- if( !vis[Pn.e] )
- {
- Q.push(Pn);
- vis[Pn.e] = true;
- }
- }
- }
- }
- }
- void PutPath(int Star,int End)
- {
- if(Star == End)
- {
- printf("%d", Star);
- return ;
- }
- PutPath(Star, Path[End]);
- printf("---->%d", End);
- }
- void Init()
- {
- for(int i=; i<=n; i++)
- {
- G[i].clear();
- dist[i] = INF;
- vis[i] = false;
- Path[i] = i;
- }
- }
- int main()
- {
- int m;
- cin >> n >> m;
- Init();
- for(int i=; i<=m; i++)
- {
- int a, b, c;
- cin >> a >> b >> c;
- G[a].push_back(Edge(b,c));
- }
- Spfa(, n);
- printf("%d\n", dist[n]);
- PutPath(,n);
- return ;
- }
- /*
- 4 3
- 1 2 1
- 2 3 1
- 3 4 1
- */
SPFA 最短路径打印方法的更多相关文章
- DebugLog 打印方法执行时间
DebugLog 打印方法执行时间 用于方便调试性能问题的打印插件.给访法加上@DebugLog,就能输出该方法的调用参数,以及执行时间. Project gradle配置 // Top-level ...
- 转网页WB.ExecWB控件打印方法
网页WB.ExecWB控件打印方法 2010-02-01 12:48 代码: <table width="100%" cellpadding="1" on ...
- js打印方法总结
前段时间做web项目用到了页面打印,在网上找了些资料,自己也试了很多方法,将这些方案列出下: 1.window.print()方法打印,所有主要浏览器都支持 print() 方法 这个方法很实用,只需 ...
- 实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法
实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法 #import <Found ...
- Swift中自定义Log打印方法
系统如何调用super方法 系统默认只会在构造函数中,自动调用super.init()方法,而且是在所写方法的尾部进行调用. 在其他函数中,如何需要调用父类的默认实现,都需要手动去实现. 如果在构造函 ...
- Swift中自定义打印方法
// 1.获取打印所在的文件 let file = ( #file as NSString).lastPathComponent // 2.获取打印所在的方法 let funcName = #func ...
- C/S模式下的打印方法
C/S模式使用润乾报表时有两种打印方法(都使用设计器授权) 1. 使用加密狗打印 这种方式需要使用加密狗,适用于客户端较少时 2. 使用api调用打印方法实现打印 ...
- 使用打印方法时,要先引用命名空间: Using System.Drawing.Pringing
使用打印方法时,要先引用命名空间: Using System.Drawing.Pringing PrintDocument类的重要属性和方法:属性:DocumentName 设置打印文档时要显示的文 ...
- Swift 自定义打印方法
Swift 自定义打印方法 代码如下 // MARK:- 自定义打印方法 func MLLog<T>(_ message : T, file : String = #file, funcN ...
随机推荐
- Node.js【2】开发环境搭建(Windows、Linux&Mac)
安装方式有非常多种,以下仅仅是我喜欢的一种方式,安装的路径不一定要跟我一样. 眼下最新的版本号是v0.10.28 Windows 1.下载(放到E:\node\nodejs): http://node ...
- 怎样学好C语言,一个成功人士的心得!
今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了全部的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的 ...
- Linux Top 命令解析 比较详细--转
TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中C ...
- 数据的存储-NSKeyedArchiver和write to file介绍
数据的存储-NSKeyedArchiver和write to file介绍 首先介绍各个文件的作用-->讲解文件位置的查找方法-->介绍数据存储的方式:1.使用归档方式存储数据 2.wri ...
- 当ViewPager嵌套在ScrollView/ListView里时,手势冲突如何处理?
有时我们需要将ViewPager嵌套在其他已经含有手势动作的ViewGroup里,如ScrollView,ListView时,会造成手势冲突,如表现为ViewPager向左划时,不小心向上移动了一点距 ...
- css样式之背景图片
1.css样式背景之使用图片来做为背景 example: <!DOCTYPE html> <html> <head> <meta http-equiv=&qu ...
- 开发RESTful WebService
RESTful风格的webservice越来越流行了,sun也推出了RESTful WebService的官方规范:JAX-RS,全称:Java API for RESTful WebService. ...
- (转)dedecms [field:array runphp='yes']标签使用技巧
field支持用array获取任意字段的值:(支持标记:文章内容模板的 {dede:field name=’array’ /}.arclist.arclistsg.loop.sql 标签) 我们平时常 ...
- Xml解析之——Java/Android/Python
Xml解析之——Java/Android/Python 一.Xml文件 test.xml <note> <to>George</to> <from>Jo ...
- Protocol Buffer Xcode 正确使用思路 成功安装 Xcode7.1
1. 下载protobuf编译工具 序列化是将数据转换为一个特定的类 http://pan.baidu.com/s/1qWrxHxU 下载解压,它不是用来放在你的项目里 2.打开终端 依次输入并等待指 ...