HDU 2066 一个人的旅行
来源:互联网 发布:caj文件打开软件 编辑:程序博客网 时间:2024/06/03 21:53
题目链接
题意:中文题。。。
分析:floyd算法,删减dp[i][k] inf的边 优化避免超时
#include<cstdio>#include<cstring>#include<algorithm>#define inf 0x3f3f3f3f#define N 1001using namespace std;int dp[N][N];int dd[N];void floyd(int n){ for(int k=0;k<=n;k++) { for(int i=0;i<=n;i++) { if(dp[i][k]!=inf) { for(int j=0;j<=n;j++) { dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]); } } } }}int main(void){ int t,s,d; while(scanf("%d%d%d",&t,&s,&d)==3) { for(int i=0;i<N;i++) { dp[i][i]=0; for(int j=i+1;j<N;j++) dp[i][j]=dp[j][i]=inf; } memset(dd, 0, sizeof(dd)); int num=0; for(int i=1;i<=t;i++) { int a,b,t; scanf("%d%d%d",&a,&b,&t); num=max(a,num); num=max(b,num); dp[a][b]=min(dp[a][b],t); dp[b][a]=t; } for(int i=1;i<=s;i++) { int ss; scanf("%d",&ss); dp[0][ss]=0; dp[ss][0]=0; } for(int i=1;i<=d;i++) scanf("%d",&dd[i]); floyd(num); int res=inf; for(int i=1;i<=d;i++) { if(dp[0][dd[i]]<res) { res=dp[0][dd[i]]; } } printf("%d\n",res); } return 0;}
0 0
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU-2066 一个人的旅行
- Hdu-2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066(一个人的旅行)
- java练习(16.08.03)支付问题
- 数据结构实验之串一:KMP简单应用
- 关于A+B+C问题4种语言的解决办法,Java、C语言、C++、Python
- 软件架构师应该知道的 97 件事
- 微软技术支持实习面试
- HDU 2066 一个人的旅行
- 由HDU3689,得KMP算法与一个经典概率问题
- 网易16年研发实习生笔试题 - 寻找第K大
- 去哪儿 5-血型遗传检测
- PAT-A 1015. Reversible Primes
- php之连接到MySQL,并将数据储存在MySQL中的实例
- 简单好有的json工具
- 大整数类-实现加减法
- DP ( 滚动数组 )——Max Sum Plus Plus ( HDU 1024 )