hdu 2066 一个人的旅行
2014-04-21 21:58
369 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2066
这道题用floyd做的时候要稍微优化,不优化就会超时。
View Code
这道题用floyd做的时候要稍微优化,不优化就会超时。
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #define maxn 1001 using namespace std; const int inf=1<<28; int g[maxn][maxn]; int a,b,t,max1; int s1[maxn]; int d1[maxn]; void floyd() { for(int k=1; k<=max1; k++) { for(int i=1; i<=max1; i++) { if(g[i][k]==inf) continue; for(int j=1; j<=max1; j++) { if(g[i][j]>g[i][k]+g[k][j]) g[i][j]=g[i][k]+g[k][j]; } } } } int main() { int T,s,d; while(cin>>T>>s>>d) { for(int i=0; i<=maxn; i++) { for(int j=0; j<=maxn; j++) { if(i==j) g[i][j]=0; else g[i][j]=inf; } } max1=-1; for(int i=0; i<T; i++) { scanf("%d%d%d",&a,&b,&t); if(g[a][b]>t) g[a][b]=g[b][a]=t; max1=max(max1,a); max1=max(max1,b); } floyd(); for(int i=0; i<s; i++) { scanf("%d",&s1[i]); } for(int j=0; j<d; j++) { scanf("%d",&d1[j]); } int min2=99999999; for(int i=0; i<s; i++) { for(int j=0; j<d; j++) { min2=min(min2,g[s1[i]][d1[j]]); } } printf("%d\n",min2); } return 0; }
View Code
相关文章推荐
- HDU 2066 一个人的旅行
- 【HDU - 2066 一个人的旅行】 最短路 dijkstra,spfa
- HDU 2066 一个人的旅行 (单源最短路)
- HDU2066 一个人的旅行(dijkstra算法)
- HDU 2066-一个人的旅行(最短路Dijkstra)
- HDU 2066 一个人的旅行dijikstra算法
- HDU-2066 一个人的旅行 最短路
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066一个人的旅行(dijk最短路)
- hdu 2066 一个人的旅行【Dijkstra】解法
- hdu 2066 一个人的旅行(Dijkstra求最短路问题)
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行 最短路径
- HDU 2066 【Dijkstra】 一个人的旅行
- HDU 2066 一个人的旅行 - from lanshui_Yang
- hdu 2066 一个人的旅行(简单的Dijkstra)
- 最短路算法 Dijkstra算法 HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行