HDU2544 最短路 + 裸 + dijkstra + 邻接矩阵
来源:互联网 发布:樱井知香黑人 编辑:程序博客网 时间:2024/06/05 14:23
1)
//hdu 2544,裸dijkstra#include <iostream>#include <string.h>using namespace std;const int maxn=120;const int INF=999999;int lukou[maxn][maxn];int visted[maxn];//区别该点是否进入确定的集合之中int d[maxn];//目前从起点出发,到第i点的最短距离int dijkstra(int s,int n){ visted[s]=1;//1进入集合 for(int i=1;i<=n;i++){ d[i]=lukou[s][i];//因为1是起点,所以我们先把这个点放入确定的集合之中,也就得到了目前所知的从起点出发,到其他点的初始距离 //cout<<i<<":"<<d[i]<<endl; } for(int k=1;k<=n-1;k++){ int jilu; int minn=INF; //从起点出发,找出从起点到其他未加入集合中的点i的最短距离的d[i] for(int i=1;i<=n;i++){ if(!visted[i]&&minn>d[i]){ minn=d[i]; jilu=i; } } visted[jilu]=1;//将该点放入确定的点集中 //因为新加入点,更新从起点出发经过新加入的点到其他的未加入集合的点的距离 for(int i=1;i<=n;i++){ if(!visted[i]&&d[i]>d[jilu]+lukou[jilu][i]){ d[i]=d[jilu]+lukou[jilu][i]; } } //继续外层for循环,知道循环n-1次,代表找到了最短路径(因为极端情况下从第一个点到最后一个点,最短路径最少经过n-1条边,这一点和bellmanford 最外层的v-1次循环是一个到道理(v是点的个数)) } return d[n];}int main(){ int n,m; while(cin>>n>>m&&n!=0){ int a,b,v; int s=1;//起点 memset(visted,0,sizeof(visted)); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i==j){ lukou[i][j]=0; } else lukou[i][j]=INF; } } for(int i=1;i<=m;i++){ cin>>a>>b>>v; lukou[a][b]=v; lukou[b][a]=v; } cout<<dijkstra(s,n)<<endl; } return 0;}
0 0
- HDU2544 最短路 + 裸 + dijkstra + 邻接矩阵
- hdu2544(裸最短路dijkstra)
- HDU2544 最短路 + 裸 + Floyd + 邻接矩阵
- hdu2544 Dijkstra最短路
- HDU2544:最短路(Dijkstra)
- HDU2544 最短路 【Dijkstra】
- hdu2544 最短路(dijkstra)
- hdu2544最短路(dijkstra)
- hdu2544最短路(floyd)(dijkstra)
- HDU2544 最短路【Dijkstra算法】
- HDU2544 最短路 Dijkstra实现
- HDU2544 最短路(dijkstra算法)
- HDU2544:最短路【Dijkstra & SPFA】
- HDU2544:最短路(Dijkstra,SPFA)
- HDU2544最短路 (Dijkstra求最短路)
- hdu2544 最短路(dijkstra求单源最短路)
- hdu2544最短路-裸的flody-dijkstra-spfa
- HDU2544 最短路 解题报告--Dijkstra
- PhantomJS
- 如何学习java
- 图片,还可以这样玩儿
- angularjs结合localstorage完成一个简单的备忘录
- EditText点击事件——弹出单选框
- HDU2544 最短路 + 裸 + dijkstra + 邻接矩阵
- C++ limits头文件的用法(numeric_limits)
- js---匿名函数和闭包
- java基础之try-catch-finally
- 解决Spring MVC 对AOP不起作用的问题
- Linux性能测试命令系列(1)- top
- Linux C++的多线程编程
- 第一个ShaderToy——画圆、方、三角
- Java进阶学习第五天——XML入门