个人模板 最短路djkstra
2017-03-27 18:52
274 查看
在n个点m条边的图中求s点到e点的最短距离
#include<bits/stdc++.h> #define inf 1e7 using namespace std; int m,n,s,e; int a[101][101]; int dis[101]; int vis[101]; void djkstra(int m,int k) { for(int i=1; i<=n; i++) ///初始化 { for(int j=1; j<=n; j++) { if(i==j) a[i][j]=0; else a[i][j]=inf; } } int t1,t2,t3; for(int i=0; i<m; i++) ///建立双向图 { scanf("%d%d%d",&t1,&t2,&t3); a[t1][t2]=t3; a[t2][t1]=t3; } for(int i=1; i<=n; i++) ///dis数组记录K点到各个点间距离 { dis[i]=a[s][i]; vis[i]=0; } vis[1]=1; for(int i=1,u; i<n; i++) ///松弛操作 { int mmin=inf; for(int j=1; j<=n; j++) { if(!vis[j]&&dis[j]<mmin) { mmin=dis[j]; u=j; } } vis[u]=1; for(int k=1; k<=n; k++) { if(a[u][k]<inf) { if(dis[k]>a[u][k]+dis[u]) dis[k]=a[u][k]+dis[u]; } } } } int main() { while(scanf("%d%d%d%d",&n,&m,&s,&e)==4) { djkstra(m,s); printf("%d\n",dis[e]); } }
相关文章推荐
- 个人模板 最短路floyd
- 个人模板 最短路SPFA
- 最短路模板
- hdu 2544 最短路(Dijkstra模板)
- hdu Two Paths 次短路模板 (可往回走)
- 个人模板 高精度BigInt
- spfa 有无负权环 负权边最短路 模板
- Dijkstra算法模板---单源最短路---邻接矩阵模板+题目
- 优先队列优化的求最短路和次短路条数以及长度的模板
- POJ - 2387 Til the Cows Come Home(最短路Dijkstra模板题)
- POJ 2447 Remmarguts' Date【k短路 SPFA+A* 模板题】
- 平面设计个人简历模板
- poj1511/zoj2008 Invitation Cards(最短路模板题)
- POJ3259 Wormholes(最短路,有无负环,spfa,模板)
- 洛谷1339 热浪(最短路模板)
- 常见模板(欧拉筛素数,最小生成树,快排,并查集,单源最短路)
- 【图论】单源点最短路模板(有向图)Dijkstra
- 最短路~dijkstra堆优化模板
- 【洛谷T577】【模板】template 最短路 SPFA+dij
- 最短路 kruskal模板