hdu 1874 畅通工程续
2015-08-08 14:39
369 查看
最短路大概是模板题,不说了水一发,下附AC代码
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <cmath> #define INF 0x3f3f3f using namespace std; int maxn; int n,m; int vis[202]; int dis[202]; int start,theend; int map[202][202]; void dijkstra() { int next; int i,j,mindist; memset(vis,0,sizeof(vis)); for( i=0 ;i<n;i++) { dis[i]=map[start][i]; } vis[start]=1; for(i=1 ; i<n ;i++) { mindist=INF; for(j=0; j<n ;j++) { if(vis[j]==0&&mindist>dis[j]) { mindist=dis[j]; next=j; } } vis[next]=1; if(mindist==10000000) break; for(j=0;j<n;j++) { if(!vis[j]&&map[next][j]+dis[next]<dis[j]) { dis[j]=map[next][j]+dis[next]; } } } if(dis[theend]==INF) { printf("-1\n"); } else { printf("%d\n",dis[theend]); } } bool fin(int zz) { return zz<=maxn?true:false; } int main() { int city1,city2,step; while(scanf("%d%d",&n,&m)!=EOF) { maxn=0; for(int i = 0 ; i <= 200 ; i++) { for(int j = 0 ; j <= 200 ;j++) { if(i==j)map[i][j]=0; else map[i][j]=INF; } } while(m--) { scanf("%d%d%d",&city1,&city2,&step); if(map[city1][city2]>step) { map[city1][city2]=step; map[city2][city1]=step; } } scanf("%d%d",&start,&theend); dijkstra(); } return 0; }
相关文章推荐
- Codeforces Round #254 (Div. 2) SDUT2015暑假集训14级周赛2 (并查集)
- Lotus分析
- 一个资深系统管理员的O2O实践(一)
- 一个资深系统管理员的O2O实践(一)
- 一个资深系统管理员的O2O实践(一)
- android_Color.RGB 颜色之间渐变基本算法
- Ubuntu下包含2种远程桌面的方式:VINO-Server以及VNC Server
- JAVA编程思想学习笔记(二)---方法重载
- 网络编程TCP(一)
- 周赛题目
- Linux下静态编译glib
- win8快键关机设置方法
- 当获取div的宽度为“100%”想获取其具体的像素值px怎么办
- 知识储备:Handler知识详解
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATI
- RNN 入门学习资料整理
- scanf()函数的原理
- fedora20配置静态ip
- 从Sql Server通过HTTP推送数据到网页
- 解决“同一UIView中有多个UITableView时点击状态栏不能置顶”问题