【杭电】[1874]畅通工程续
2016-03-30 07:30
393 查看
也算是模板题目
需要注意的
有可能不存在从S到T的路线
还有道路编号是 0~N-1
#include<stdio.h> int e[220][220],dis[220]; int main() { int inf=99999999; int n,m; while(scanf("%d %d",&n,&m)!=EOF) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(i==j) e[i][j]=0; else e[i][j]=inf; } } while(m--) { int x,y,t; scanf("%d %d %d",&x,&y,&t); if(e[x][y]>t) { e[x][y]=e[y][x]=t; } } int s,t; scanf("%d %d",&s,&t); for(int i=0; i<n; i++) { dis[i]=e[s][i]; } bool flag[220]; for(int i=0; i<n; i++) flag[i]=false; flag[s]=true; for(int i=0; i<n; i++) { int min=inf,tj; for(int j=0; j<n; j++) { if(!flag[j]&&dis[j]<min) { min=dis[j]; tj=j; } } flag[tj]=true; for(int k=0; k<n; k++) { if(!flag[k]&dis[k]>dis[tj]+e[tj][k]) { dis[k]=dis[tj]+e[tj][k]; } } } if(dis[t]<inf) printf("%d\n",dis[t]); else printf("-1\n"); } return 0; }
题目地址:【杭电】[1874]畅通工程续
相关文章推荐
- 高精度加法——杭电1002
- Hdu2066(一个人的旅行)
- 杭电1870 愚人节的礼物
- Poj2638 网络流+最短路+二分答案
- Aizu1311 分层图最短路 (...大概)
- 关于杭电1405 The Last Practice 的问题
- hdu-1103 模拟题。
- hdu-1022 栈的应用。
- hdu-1247 简单map的应用。(字典树)
- hdu-1251 字典树公共前缀。
- hdu-1075 map映射表的应用。
- 杭电ACM Steps (1)
- 最短路径 -- spfa
- hdu 1005 -- Number Sequence
- hdu 1007 -- Quoit Design
- 杭电1004
- 杭电1005
- 杭电1008
- c++编写藏手帕问题
- 杭电1434 优先队列