题目1447:最短路 【dijkstra法】
来源:互联网 发布:python调用webservice 编辑:程序博客网 时间:2024/04/28 01:03
#include <stdio.h>#include <vector>using namespace std;struct E { int next; int c;};vector<E> edge[101];bool mark[101];int dis[101];int main() { int n,m; while(scanf("%d %d",&n,&m)!=EOF) {if(n==0 && m==0) break;for(int i=1;i<=n;i++) edge[i].clear();for(int i=1;i<=n;i++) { mark[i] = false; dis[i] = -1;}while(m--) { int a,b,c; scanf("%d %d %d",&a,&b,&c); E tmp; tmp.c = c; tmp.next = b; edge[a].push_back(tmp); tmp.next = a; edge[b].push_back(tmp);}mark[1] = true;dis[1] = 0;int newP = 1;for(int i=1;i<n;i++) { for(int j=0;j<edge[newP].size();j++) {int t = edge[i][j].next;int c = edge[i][j].c;if(mark[t] == true) continue;if(dis[t]==-1 || dis[t] > dis[newP] + c) dis[t] = dis[newP] + c; } int min = 123123123; for(int j=1;j<=n;j++) {if(mark[j] == true) continue;if(dis[j] == -1) continue;if(dis[j] < min) { min = dis[j]; newP = j;} } mark[newP] = true;}printf("%d\n",dis[n]); } return 0;}
Floyd算法可以计算出图中所有结点对之间的最短路径长度,而dijkstra算法只能求的某特定结点到其他所有结点的最短路径距离。
- 题目1447:最短路 【dijkstra法】
- 题目1447:最短路(Dijkstra)
- 题目1447:最短路之Dijkstra
- 题目1447:最短路
- 题目1447:最短路
- 题目1447:最短路
- 题目1447:最短路
- 1874 畅通工程续 (最短路 Dijkstra Floyd入门题目)
- Jobdu 题目1447:最短路
- 最短路问题 Dijkstra标号法
- 最短路 Dijkstra算法
- 最短路之dijkstra
- hdu1874 Dijkstra 最短路
- HUD最短路 (Dijkstra)
- hdu2544 Dijkstra最短路
- 最短路之Dijkstra
- 图论 最短路 Dijkstra
- Dijkstra 求最短路
- Ubuntu下deb包的安装方法
- 新的征程
- 编程原则 《数据机构与程序设计》 第一章
- [C++][STL]容器的capacity、max_size以及内存分配
- Cube painting
- 题目1447:最短路 【dijkstra法】
- js技术要点---document.write("")方法在IE浏览器和火狐浏览器下面的兼容性问题
- C++的智能指针
- 多校第二场
- MFC动态创建按钮及添加消息响应
- Secret Research
- c++ 泛型编程 之Factor (c++ 设计新思维)
- 程序原理
- 位运算