Dijkstra 单源最短路径
2015-04-25 20:27
330 查看
1. #include <cstdio> #include <iostream> #include <algorithm> #include <queue> #include <stack> #include <climits> #include <cstring> #include <cmath> #include <map> #include <set> #define INF 100000000 using namespace std; int n,v,m; int d[1000]; int vis[1000]; int G[1000][1000]; int dijkstra(int s){ fill(d,d+n,INF); memset(vis,0,sizeof(vis)); d[s] = 0; for(int i = 0;i < n - 1;i++){ int tm = INF; int q ; //在已经寻找到最短路径的点找到最小的那个 for(int j = 0;j < n;j++){ if(!vis[j] && d[j] < tm){ tm = d[j]; q = j; } } //代表这个点已经找到了最短路径 vis[q] = 1; for(int j = 0;j < n;j++){ if(G[q][j]){ d[j] = min(d[j],d[q] + G[q][j]); } } } for(int i = 0;i < n;i++){ printf("%d\n",d[i]); } } int main(){ while(cin >> n >> m){ for(int i = 0;i < m;i++){ int x,y,w; cin >> x >> y >> w; G[x][y] = w; G[y][x] = w; } int s; cin >> s; dijkstra(s); } return 0; }
2.
#include <cstdio> #include <iostream> #include <algorithm> #include <queue> #include <stack> #include <climits> #include <cstring> #include <cmath> #include <map> #include <set> #define INF 100000000 using namespace std; int n,v,m; int d[1000]; int vis[1000]; int G[1000][1000]; typedef pair<int,int> pa; int dijkstra(int s){ fill(d,d+n,INF); memset(vis,0,sizeof(vis)); priority_queue< pa,vector<pa>,greater<pa> > que; que.push(pa(0,s)); d[s] = 0; for(int i = 0;i < n - 1;i++){ int q = que.top().second; que.pop(); for(int j = 0;j < n;j++){ if(G[q][j]){ d[j] = min(d[j],d[q] + G[q][j]); que.push(pa(d[j],j)); } } } for(int i = 0;i < n;i++){ printf("%d\n",d[i]); } } int main(){ while(cin >> n >> m){ for(int i = 0;i < m;i++){ int x,y,w; cin >> x >> y >> w; G[x][y] = w; G[y][x] = w; } int s; cin >> s; dijkstra(s); } return 0; }
相关文章推荐
- uva 11374 Dijkstra (单源最短路径)
- 数据结构与算法--单源最短路径算法之dijkstra
- 【模板】 Dijkstra单源最短路径 (模板题:XJOI P1061)
- 单源最短路径算法模板(Dijkstra+BellmanFrod)
- 单源最短路径问题--Dijkstra
- poj 3268 Silver Cow Party(单源最短路径Dijkstra·最小环)
- 迪杰斯特拉(Dijkstra)算法求解单源最短路径及其相应长度(java实现)
- Dijkstra单源最短路径
- Dijkstra单源最短路径算法
- 单源最短路径算法模板(Dijkstra+BellmanFrod)
- Dijkstra单源最短路径
- 单源最短路径问题 Dijkstra 贪心法
- 6.2--Dijkstra单源最短路径
- Dijkstra单源最短路径,适合稠密图,顶点少,边多(c语言)
- Dijkstra 邻接矩阵 单源点最短路径
- PAT 1111 —— Online Map(Dijkstra单源最短路径)
- Dijkstra求单源最短路径
- Dijkstra算法求单源最短路径
- Dijkstra 算法求单源最短路径
- 单源最短路径——dijkstra