HDU1874 (dijkstral算法)
来源:互联网 发布:php define const 区别 编辑:程序博客网 时间:2024/06/15 15:15
居然有重边.....
有重边也就罢了居然可以起点和终点一样!!
1:重边选择最小的;
2:起点和终点相同的时候输出0.
这样就行了.
#include <stdio.h>#include <string.h>#define MAX 1000000int maps[202][202];int M,N;int visited[202],lowcost[202];void init(){int i,h;int x,y,z;for(i=0;i<N;i++)for(h=0;h<N;h++)maps[i][h]=MAX;for(i=0;i<M;i++){scanf("%d%d%d",&x,&y,&z);if(maps[x][y]>z)maps[x][y]=maps[y][x]=z;}}void dijkstral(int begin,int end){int i,min,h,temp;memset(visited,0,sizeof(visited));memset(lowcost,0,sizeof(lowcost));for(i=0;i<N;i++)lowcost[i]=maps[begin][i];visited[begin]=1;while(1){min = MAX;temp = begin;for(i=0;i<N;i++){if(!visited[i]&&min>lowcost[i]){min=lowcost[i];temp=i;}}if(temp==begin)break;visited[temp]=1;for(h=0;h<N;h++){if(!visited[h])if(maps[temp][h]+min<lowcost[h])lowcost[h]=maps[temp][h]+min;}}}int main(){int begin,end;while(~scanf("%d%d",&N,&M)){init();scanf("%d%d",&begin,&end);if(begin==end)printf("0\n");else{dijkstral(begin,end);if(visited[end])printf("%d\n",lowcost[end]);elseprintf("-1\n");}}return 0;}
- HDU1874 (dijkstral算法)
- dijkstral 算法
- Dijkstral算法--单源最短路
- 最短路径:Dijkstral算法
- 最短路算法(3)- Dijkstral算法
- hdu1874
- hdu1874
- hdu1874
- HDU1874
- hdu1874
- HDU1874
- hdu1874
- hdu1874
- hdu1874
- hdu1874
- hdu1874
- hdu1874
- hdu1874
- LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
- 关于UISearchBar背景完全透明设置的代码
- oracle创建用户
- linux fedora17 yum 安装 tomcat6 遇到的问题
- eclipse部署,在tomcat中找不到eclipse发布的项目。eclipse更改项目发布路径
- HDU1874 (dijkstral算法)
- 电商之 团购与B2C模式以及B2B2C模式对比
- android Fragments详解
- 猜数字游戏及自动解猜数字程序
- internet时间同步时报 找不到元素 解决方法
- IOS 开发,调用打电话,发短信,打开网址
- 生如夏花之绚烂,死如秋叶之静美---也传奇
- memmove实现
- the android development environment