算法模板之Dijikstra(HDU 1874 畅通工程续)
2018-03-21 17:39
393 查看
模板总结归纳:
实战模板题 :HDU 1874 畅通工程
//dijikstra //O(n^2) /*const int MaxN = 1000; int dis[MaxN], g[MaxN][MaxN], N; // N 图中的点数, g边之间的距离, dis节点间最短距离 bool v[MaxN]; void dj() { for(int i = 0; i <= N; i++) dis[i] = INF; dis[1] = 0; memset(v, 0, sizeof(v)); for(int i = 0; i <= N; i++) { int mark = -1, mindis = INF; for(int j = 1; j <= N; j++) { if(!v[j] && dis[j] < mindis) { mindis = dis[j]; mark = j; } } if(mark == -1) break; v[mark] = 1; for(int j = 1; j <= N; j++) if(!v[j]) dis[j] = min(dis[j], dis[mark] + g[mark][j]); } }*/
实战模板题 :HDU 1874 畅通工程
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int MaxN = 10005; const int INF = 10000005; int dis[MaxN], g[MaxN][MaxN], N, M; bool v[MaxN]; void dj(int x) { for(int i = 1; i <= N; i++) dis[i] = INF; dis[x] = 0; memset(v, 0, sizeof(v)); for(int i = 1; i <= N; i++) { int mark = -1, mindis = INF; for(int j = 1; j <= N; j++) { if(!v[j] && dis[j] < mindis) { mindis = dis[j]; mark = j; } } if(mark == -1) break; v[mark] = 1; for(int j = 1; j <= N; j++) if(!v[j]) dis[j] = min(dis[j], dis[mark] + g[mark][j]); } } int main() { while(cin >> N >> M) { int a, b, x; for(int i = 1; i <= N; i++) for(int j = 1; j <= N; j++) { if(i == j) g[i][j] = 0; else g[i][j] = INF; } for(int i = 1; i <= M; i++) { cin >> a >> b >> x; if(g[a + 1][b + 1] > x) { g[a + 1][b + 1] = x; g[b + 1][a + 1] = x; } } cin >> a >> b; dj(a + 1); if(dis[b + 1] == INF) cout << "-1" << endl; else cout << dis[b + 1] << endl; } return 0; }
相关文章推荐
- 算法模板之Floyd(HDU 1874 畅通工程续)
- HDU 1874 畅通工程续(模板题——Floyd算法)
- HDU-1874-畅通工程续(随便你什么算法,反正我是睡不着)
- HDU-1874 畅通工程续 最短路算法模板
- hdu 1874 畅通工程续 两种算法AC Floyd+Bellman-Ford算法 又是一波水题~~
- hdu 1863 畅通工程 最小生成树模板入门题 prim+kruskal两种算法AC。
- 【1874】畅通工程续 (最短路四种算法)(HDU)
- hdu 1874 畅通工程续(spfa模板)
- 【1874】畅通工程续 (最短路四种算法)(HDU)
- 算法模板之Kruskal(HDU 1863 畅通工程)
- HDU-1874 畅通工程续 【dijkstra模板】
- HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)
- 畅通工程续(1874)hdu最短路径算法—Floyd
- hdu 1874 畅通工程续(模板题 spfa floyd)
- hdu 1874 畅通工程续(图论:两点之间最短路-弗洛伊德算法 || 贝尔曼福特算法)
- HDU-1874 畅通工程续 【dijkstra模板】
- HDU 1874 畅通工程续 (dijkstra模板)
- HDU 1874 畅通工程续 <Dijkstra模板题>
- HDU 1874 畅通工程续 FLOYD 算法
- HDU 1874 畅通工程续 (dijkstra模板)