HDU 1690 多源最短路径 Bus System
2013-05-11 12:31
302 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1690
分析:求出任意两点这间的最小消费.对m次询问就可直接打出来.
分析:求出任意两点这间的最小消费.对m次询问就可直接打出来.
#include<iostream> #include<string> #include<cstring> #include<algorithm> #include<cstdio> #include<cmath> #include<iomanip> using namespace std; const int maxn=1000+10; const __int64 inf=100000000002; __int64 L1,L2,L3,L4,C1,C2,C3,C4; __int64 map[maxn][maxn]; __int64 d[maxn]; int main(){ int T; cin>>T; int cas=1; while(T--){ cin>>L1>>L2>>L3>>L4>>C1>>C2>>C3>>C4; int n,m; cin>>n>>m; ///初始化 for(int i=1;i<=n;++i){ cin>>d[i]; map[i][i]=0; for(int j=1;j<i;++j){ __int64 s=max(d[i],d[j])-min(d[i],d[j]),v; if(s>L4) v=inf; else if(s>L3) v=C4; else if(s>L2) v=C3; else if(s>L1) v=C2; else if(s>0) v=C1; else v=0; map[i][j]=map[j][i]=v; } } ///floyd算法 for(int k=1;k<=n;++k) for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) map[i][j]=min(map[i][j],map[i][k]+map[k][j]); printf("Case %d:\n",cas++); while(m--){ int x,y; cin>>x>>y; if(map[x][y]==inf)printf("Station %d and station %d are not attainable.\n",x,y); else printf("The minimum cost between station %d and station %d is %I64d.\n",x,y,map[x][y]); } } return 0; }
相关文章推荐
- HDU 1690 多源最短路径 Bus System
- HDU 1690 Bus System(多源最短路径)
- [最短路径] HDU 1690 - Bus System
- HDU 1690 Bus System (最短路径bellmamford算法)
- HDU 1690 Bus System 任意点最短路径Floyd
- hdu 1690 Bus System (最短路径)
- hdu 6166 Senior Pan(多源最短路径)(二进制划分集合)
- hdu 6166 Senior Pan(多源最短路径)(二进制划分集合)
- hdu 6166 Senior Pan(多源最短路径)(二进制划分集合)
- (step6.2.1)hdu 1690(Bus System——最短路径)
- hdu 6166 Senior Pan(多源最短路径)(二进制划分集合)
- HDOJ 题目1690Bus System(最短路径)
- hdu 6166 Senior Pan(多源最短路径)(二进制划分集合)
- hdu 6166 Senior Pan(多源最短路径)(二进制划分集合)
- hdu 1690 Bus System Floyd 求最短路径
- (阶段三 dijkstra算法温习1.2)HDU 2066 一个人的旅行(使用dijkstra来解决多源起点和多源终点的最短路径问题)
- (阶段三 dijkstra算法温习1.5)HDU 2680 Choose the best route(使用dijkstra算法求解多源起点的最短路径问题)
- hdu 6166 Senior Pan(多源最短路径)(二进制划分集合)
- HDU 2923 Einbahnstrasse(最短路径,多源点到单源点)
- hdu 1690 Bus System Floyd 求最短路径