hdu1874(dijkstra)
来源:互联网 发布:windows文件监控 编辑:程序博客网 时间:2024/06/11 00:51
发现好多算法都不会写了。
#include <stdio.h>#include <stdlib.h>#include<string.h>#define max 10000000int m,n;int dis[205][205];int s,t;void init(int ars[][205]){ int i ,j; for(i=0;i<202;i++) for(j=0;j<202;j++) { if(i!=j) dis[i][j]=max; }}void dijkstra(int ars[][205],int m,int s){ int final[205]={0}; //当其值为1时表示最近点从源点到此点最近已经找到 int x,min; int i,j; final[s]=1; for(i=0;i<m;i++) { min=max; for(j=0;j<m;j++) { if(!final[j]&&ars[s][j]<min) //从所有没有最短路径的点中找到一个最短的 { min=ars[s][j]; x=j; } } final[x]=1; for(j=0;j<m;j++) dis[j][s]=dis[s][j]=dis[s][j]<(dis[s][x]+dis[x][j])?dis[s][j]:dis[s][x]+dis[x][j]; } //以刚找到的点从中间点做一次松驰}int main(){ int i ; int x,y,a; while(scanf("%d %d",&m,&n)!=EOF) { memset(dis,0,sizeof(dis)); init(dis); for(i=0;i<n;i++) { scanf("%d %d %d",&x,&y,&a); dis[y][x]=dis[y][x]<a?dis[x][y]:a; dis[x][y]=dis[y][x]; } scanf("%d %d",&s,&t); dijkstra(dis,m,s); if(dis[s][t]==max) printf("-1\n"); else printf("%d\n",dis[s][t]); } return 0;}
- hdu1874(dijkstra)
- hdu1874 dijkstra
- hdu1874 dijkstra
- hdu1874 dijkstra模板题
- hdu1874 Dijkstra 最短路
- hdu1874(dijkstra)
- hdu1874 单源最短路Dijkstra
- hdu1874 Dijkstra学习
- hdu1874畅通工程续 (dijkstra)
- hdu1874 畅通工程续(Dijkstra)
- hdu1874 Dijkstra(堆优化)+floyd
- hdu1874畅通工程续dijkstra
- HDU1874 畅通工程续【Dijkstra】
- 【HDU1874】畅通工程续【dijkstra】
- 最短路之Dijkstra---HDU1874
- HDU1874-畅通工程续(Dijkstra)
- HDU1874 畅通工程续 解题报告--Dijkstra
- HDU1874:畅通工程续(Dijkstra/Floyd/SPFA)
- 《算法竞赛-训练指南》第一章-1.9——UVa11210
- error LNK2019: 无法解析的外部符号
- Android 框架简介
- 数据库自联表查询
- 编写健壮的Bash shell脚本
- hdu1874(dijkstra)
- ShapeDrawable(1)
- 几个Eclipse超酷插件
- juqery之匿名函数 extend each this
- try{} catch{}
- c语言文件操作(另一个版本)
- Unity3D NGUI UIButtonTween动画事件详解
- Android深入浅出之Binder机制
- 内存分析