最短路 dijstra
2017-03-22 15:47
615 查看
#include<stdio.h> #include<string.h> int map[100][100];// 保存地图 int vis[100]; // 标记 int dis[100]; // 记录 节点n到各个节点最小的路径 const int inf=1<<30; int min(int a,int b){ return a>b?b:a; } int disk(int n){ int i,j,minx,index; for( i=1; i<=n; ++i ) { minx=inf; for( j=1; j<=n; ++j ) // 从dis数组里面n点到其他各点中最短的一个点 找出来 { if( vis[j]==0 && dis[j] < minx ) { minx = dis[j]; index = j; } } vis[index]=1; // 找到 这点 加入到最近的距离里 也就是从 n-->index 最短的距离 // if( index == 1 ) break; for( j=1; j<=n; ++j ) // 经过index 松弛 各节点 { if( vis[j]==0 && map[index][j]<inf && map[index][j]+dis[index] < dis[j] ) dis[j] = map[index][j] + dis[index]; } } return dis[1]; } int main(){ int t,n,i,j; int a,b,c; while(~scanf("%d%d",&t,&n))// { for( i=1; i<=n; ++i ) // 初始化地图 for( j=1; j<=n; ++j ) map[i][j]=(i==j?0:inf); for( i=0; i<t; ++i ) { scanf("%d%d%d",&a,&b,&c); map[a][b]=c; map[b][a]=c; } memset(vis,0,sizeof(vis)); vis =1; for( i=1; i<=n; ++i ) dis[i]=map [i];// 记录n到各点中的距离 int ans=disk(n); printf("%d\n",ans); } return 0; }
相关文章推荐
- hdoj 2544 最短路(dijstra模板)
- 单源最短路——Dijstra
- HDU - 6166 SPFA最短路次短路 or 二进制+Dijstra
- POJ 2253 Dijstra 最短路变形
- [面试] BFS、Dijstra、SPFA、Floyd求最短路的比较
- POJ 3653 & ZOJ 2935 & HDU 2722 Here We Go(relians) Again(最短路dijstra)
- hdu2544 最短路 Dijstra算法堆优化,Bellman-Ford,Bellman-Ford队列优化
- poj 2387 Til the Cows Come Home -- 最短路dijstra
- HDU 2722(POJ 3653) Here We Go(relians) Again (建图,最短路Dijstra)
- uva 658 It's not a Bug, it's a Feature! 最短路dijstra
- 最短路dijstra 堆优化
- POJ1511 Invitation Cards [最短路,dijstra+heap,spfa]
- HDU 5521 Meeting (最短路,dijstra)
- poj 2449(A*+dijstra求k短路)
- 最短路 (Dijstra) Til the Cows Come Home
- 最短路Floyd(hdu1874),dijstra(poj2387)
- POJ 3653 & ZOJ 2935 & HDU 2722 Here We Go(relians) Again(最短路dijstra)
- POJ 3255 Roadblocks(Dijstra 求次短路长度)
- 1.1.1最短路(Floyd、Dijstra、BellmanFord)
- 最短路——Dijstra