uva 11280 求2点之间最短距离(图中不超过k个节点)
2017-09-23 12:29
316 查看
#include<map> #include<cstdio> #include<cstring> #include<iostream> #define INF 0x3f3f3f3f using namespace std; map<string,int>mp; string s,s1,s2; int n,m,q,dp[1010][1010],x[1010],y[1010],c[1010]; void solve(){ for(int i=1;i<n;i++) dp[i][0]=INF; for(int k=1;k<=n;k++){ for(int i=0;i<n;i++) dp[i][k]=dp[i][k-1]; for(int i=0;i<m;i++) dp[y[i]][k]=min(dp[y[i]][k],dp[x[i]][k-1]+c[i]); } } int main(){ int T,t=1; scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=0;i<n;i++){ cin>>s; mp[s]=i; } scanf("%d",&m); for(int i=0;i<m;i++){ cin>>s1>>s2; x[i]=mp[s1]; y[i]=mp[s2]; scanf("%d",&c[i]); } solve(); if(t!=1) printf("\n"); printf("Scenario #%d\n",t++); scanf("%d",&q); while(q--){ int x; scanf("%d",&x); if(x+1>=n) x=n-1; if(dp[n-1][x+1] == INF) printf("No satisfactory flights\n"); else printf("Total cost of flight(s) is $%d\n",dp[n-1][x+1]); } } }
相关文章推荐
- UVa:567 Risk (Floyd算法求所有顶点之间的最短距离模版题)
- UVa10075 - Airlines(所有点对之间的最短距离)
- 给出两个单词,找到它们的最短距离 (以它们之间隔了多少个单词计数)。
- 二叉树中相距最远的两个节点之间的距离
- 计算地球上2点之间的距离
- LCA算法求任意两个节点之间的最小公共祖先(最短路径)
- UVa 11836 Star War 四面体四面体之间的距离(三维几何)
- 坐标象限法判断矩形之间最短的距离
- HDU2196 树状dp 求树中节点之间的最长距离
- PHP计算2点经纬度之间的距离
- PHP根据经纬度,计算2点之间的距离的2种方法
- uva10263 Railway点到线段的最短距离
- ACM-ICPC 2015 Asia Tsukuba Regional Online Open Contest B(两挡板之间放着圆球,求挡板最短距离)
- 1与2之间的最短距离
- ★1007 给定一些点求两点之间的最短距离
- 最短路径问题平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。
- Floyd算法(各对顶点之间的最短距离)
- 任意两节点之间最短距离
- 求城市里两点之间的最短距离.
- (1.2.6.7)点对之间最短距离--Floyd算法