hdu1874
来源:互联网 发布:易建联新秀数据 编辑:程序博客网 时间:2024/06/08 16:27
//典型的迪斯拉算法。。。。
//感觉这个和最小生成树的模板很像呀‘
#include<iostream>#include<string.h>using namespace std;const int MAX=99999999; int n,m;int map[203][203],low[203],visit[203];void dijkstrs(int start,int end){ memset(visit,0,sizeof(visit)); int i,j,pos; visit[start]=1; for(i=0;i<n;i++) { low[i]=map[start][i]; } low[start]=0; for(i=1;i<n;i++) { int min=MAX; pos=start;//这个和最小生成树的那个不一样,。。是关键。。。 for(j=0;j<n;j++) { if(visit[j]==0&&min>low[j]) { min=low[j]; pos=j; } } visit[pos]=1; for(j=0;j<n;j++) { if(visit[j]==0&&map[pos][j]<MAX) { int ne=low[pos]+map[pos][j]; if(ne<low[j]) low[j]=ne; } } }}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) map[i][j]=MAX; } int a,b,c; for(i=1;i<=m;i++) { cin>>a>>b>>c; if(map[a][b]>c) { map[a][b]=c; map[b][a]=c; } } int start,end; scanf("%d%d",&start,&end); dijkstrs(start,end); if(low[end]==MAX) cout<<"-1"<<endl; else cout<<low[end]<<endl; }}
0 0
- hdu1874
- hdu1874
- hdu1874
- HDU1874
- hdu1874
- HDU1874
- hdu1874
- hdu1874
- hdu1874
- hdu1874
- hdu1874
- hdu1874
- hdu1874
- hdu1874(dijkstra)
- hdu1874 dijkstra
- hdu1874 dijkstra
- hdu1874畅通工程续
- hdu1874最短路
- JAVA 实现冒泡排序
- C++单例模式
- JS的Document属性和方法
- c语言 冒泡排序算法
- Java基础-环境变量
- hdu1874
- C++类构造函数初始化列表
- HTML经典试题
- 并发 并行 同步 异步 多线程的区别
- hdu 4031 线段树
- jdbc setFetchSize 原来是
- POJ 1743 Musical Theme (后缀数组加二分求不可重叠最长重复子串)
- TYVJ P1863 - [Poetize I]黑魔法师之门
- time 命令用法,注意在求进程实践的时候,real 时间长是因为i/o时间长