HDOJ 2066 一个人的旅游
来源:互联网 发布:暨南大学网络教学 编辑:程序博客网 时间:2024/05/04 08:33
一个人的旅游,还是dijkstra,不过记得构造小草编号为0到邻接城市的边长度为0。
代码
#include<iostream>using namespace std;const int INF=0x7fffffff;int dist[2005],map[2005][2005];bool visit[2005];int n;void init(){ int i,j; for( i=0; i<=n; i++){ for( j=0; j<=n; j++) if( !map[i][j]) map[i][j]=INF; dist[i]=INF; visit[i]=false; }}void Dijkstra(int s){ int mim,pt,i; dist[s]=0; pt=s; while( true){ visit[pt]=true; for( i=0; i<=n; i++) if( !visit[i]&&map[pt][i]!=INF) dist[i]=min(dist[i],dist[pt]+map[pt][i]); mim=INF; pt=-1; for( i=0; i<=n; i++){ if( !visit[i]&&mim>dist[i]){ mim=dist[i]; pt=i; } } if( pt==-1) break; } }int main(){ int s,t,d,i,j,x; while( scanf("%d%d%d",&t,&s,&d)!=EOF){ memset(map,0,sizeof(map)); while( t--){ scanf("%d%d%d",&i,&j,&x); n=max(n,max(i,j)); if( map[i][j]==0||x<map[i][j]) map[i][j]=map[j][i]=x; } init(); while( s--){ scanf("%d",&i); map[0][i]=map[i][0]=0; } Dijkstra(0); x=INF; while( d--){ scanf("%d",&t); if( x>dist[t]) x=dist[t]; } printf("%d\n",x); } return 0;}
- HDOJ 2066 一个人的旅游
- hdu 2066 一个人的旅游
- HDOJ 2066 一个人的旅行
- HDOJ-2066一个人的旅行
- hdoj 2066 一个人的旅行
- hdoj 2066 一个人的旅行
- hdoj 2066 一个人的旅行
- hdoj 2066 一个人的旅行
- HDOJ--2066--一个人的旅行
- hdoj 2066 一个人的旅行
- HDOJ -- 2066 一个人的旅行
- hdoj 2066 一个人的旅行
- 一个人旅游
- ACM HDOJ 2066 (一个人的旅行)
- hdoj 2066 一个人的旅行 【多源多汇最短路】
- hdoj.2066 一个人的旅行 20141107
- hdoj 2066 一个人的旅行 【dijstra】
- HDOJ 2066 一个人的旅行(Dijkstra)
- MFC 控件大小随窗体改变而改变大小
- Linux文件和目录访问权限设置
- 我为什么用Android 手机而不用 iPhone
- Android中ICS4.0Launcher中Fold的功能详解
- android listview
- HDOJ 2066 一个人的旅游
- Linux USB Joystick游戏杆驱动
- PKI入门级介绍
- eclipse 配置tomcat
- 黑马程序员_通灯管理系统
- 付费模式真能让网络服务更加美好么?
- 流程图常见符号
- ==和equals闲谈
- JSP中的数据库操作(3):JSP页面中的数据库插入