最短路Floyd、Dijkstra
来源:互联网 发布:mysql主键从1开始 编辑:程序博客网 时间:2024/06/08 09:28
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std; #define INF 0xfffffffint pri[1010][1010];//两个顶点之间距离int dis[1010];//起点到该点的最短距离 int vis[1010];//标记数组 int n,m;void floyd(){ for(int k=1;k<=n;k++)//中间点 { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { pri[i][j]=min(pri[i][j],pri[i][k]+pri[k][j]); } } }} void dijkstra(){ memset(vis,0,sizeof(vis)); vis[1]=1; for(int i=2;i<=n;i++) dis[i]=pri[1][i]; for(int i=0;i<n;i++) { int M=INF,k=-1; for(int j=1;j<=n;j++) { if(!vis[j]&&dis[j]<M) M=dis[j],k=j; } if(k==-1) return ; vis[k]=1; for(int j=1;j<=n;j++) if(!vis[j]&&dis[j]>dis[k]+pri[k][j]) dis[j]=dis[k]+pri[k][j]; }} int main() { while(scanf("%d%d",&n,&m)!=EOF,n||m) { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) pri[i][j]=i==j?0:INF; for(int i=1;i<=m;i++) { int a,b,c;scanf("%d%d%d",&a,&b,&c); if(pri[a][b]>c) pri[a][b]=pri[b][a]=c; } //dijkstra(); floyd(); printf("%d\n",pri[1][n]); } return 0; }
阅读全文
0 0
- 最短路dijkstra,floyd
- 最短路Floyd、Dijkstra
- hdu2544最短路(floyd)(dijkstra)
- 最短路 spfa, dijkstra, Floyd
- 最短路模版 【dijkstra】【floyd】
- 最短路【dijkstra】【floyd 】【spfa】
- poj1847Tram 最短路 floyd dijkstra
- hdu 2544 最短路 (dijkstra/floyd/spfa)
- HDU 2544 最短路 dijkstra floyd
- [dijkstra/SPFA/floyd]HDU 2544最短路
- hdu2544 最短路(Floyd,Dijkstra算法)
- 【最短路三算法】Floyd,Dijkstra,SPFA.
- 最短路 Dijkstra 和 Floyd 算法
- POJ2253 Frogger -DIJKSTRA || FLOYD最短路练习
- 最短路:Dijkstra算法和Floyd算法
- 最短路模板 Dijkstra+Floyd+SPFA
- HDU2544---最短路(dijkstra&&floyd&&spfa)
- 最短路floyd与dijkstra浅析
- 对象引用之String
- JZOJ 5406. 【NOIP2017提高A组模拟10.10】Tree
- 剑指offer第16题(合并两个排序的链表)
- WebService服务及客户端调用简单实例
- HDU4745:Two Rabbits(区间DP)
- 最短路Floyd、Dijkstra
- sip概念
- Jzoj4627 斐波那契数列
- POJ 3207 Ikki's Story IV
- Unity使用第三方C语言库思路小结
- 在opencv与vs2017联合编程时,程序运行时报错OpenCV Error
- [kaggle系列 四] 通过mnist来研究神经网络的一些细节(1)
- G
- 最小生成树Prim