Floyd模板
来源:互联网 发布:微信web开发者工具mac 编辑:程序博客网 时间:2024/06/16 00:11
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define INF 0x7f#define maxn 200int dis[maxn][maxn];int path[maxn][maxn];int n;void floyd(){ int i,j,k; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i!=j&&dis[i][j]<INF) path[i][j]=i; else path[i][j]=-1; } } for(k=0;k<n;k++) { for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(k==i||k==j) continue; if(dis[i][j]>dis[i][k]+dis[k][j]) { dis[i][j]=dis[i][k]+dis[k][j]; path[i][j]=path[k][j]; } } } }}int main(){ int i,j,from,to,val; cin>>n; for(i=0;i<n;i++) { for(j=0;j<n;j++) { dis[i][j]=INF; } } while(cin>>from>>to>>val) { if(from==-1&&to==-1&&val==-1) break; if(dis[from][to]>val) dis[from][to]=dis[from][to]=val; } floyd(); int shorest[maxn]; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==j) continue; printf("%d=>%d\t%d\t",i,j,dis[i][j]); memset(shorest,0,sizeof(shorest)); int k=0; shorest[k]=j; while(path[i][shorest[k]]!=i) { k++; shorest[k]=path[i][shorest[k-1]]; } k++; shorest[k]=i; for(int t=k;t>0;t--) printf("%d->",shorest[t]); printf("%d\n",shorest[0]); } } return 0;}
0 0
- floyd模板
- Floyd模板
- Floyd模板
- Floyd 模板
- floyd 模板
- Floyd 模板
- floyd 模板
- floyd模板
- toj2033 floyd算法 模板
- Floyd算法模板
- Floyd算法模板
- floyd算法模板
- floyd算法模板
- Floyd算法模板
- Floyd算法模板
- floyd 最短路 模板
- Floyd-Warshall算法模板
- 【模板】Floyd双源最短路径
- 一个关于预编译的问题
- 完美的“白马王子”好丈夫?
- 大家来说说: C语言程序的结构特点
- Request Flow for Provisioning Instance in Openstack
- 学习笔记——html 元素 (一)
- Floyd模板
- Android学习路线(十六)支持不同设备
- 为什么C语言中的整型取值范围是--32768~32767
- oracle 高水位线详解
- HDU1166_敌兵布阵(线段树/单点更新)
- struts2笔记之 -- JFreeChart插件简单例子
- Python学习笔记03 控制流语句和函数
- hdu 2099 整除的尾数
- 热天二太太团