HDOJ 题目1690Bus System(最短路径)
来源:互联网 发布:cs8录屏软件 编辑:程序博客网 时间:2024/05/23 11:58
Bus System
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6610 Accepted Submission(s): 1706
Problem Description
Because of the huge population of China, public transportation is very important. Bus is an important transportation method in traditional public transportation system. And it’s still playing an important role even now.
The bus system of City X is quite strange. Unlike other city’s system, the cost of ticket is calculated based on the distance between the two stations. Here is a list which describes the relationship between the distance and the cost.
Your neighbor is a person who is a really miser. He asked you to help him to calculate the minimum cost between the two stations he listed. Can you solve this problem for him?
To simplify this problem, you can assume that all the stations are located on a straight line. We use x-coordinates to describe the stations’ positions.
The bus system of City X is quite strange. Unlike other city’s system, the cost of ticket is calculated based on the distance between the two stations. Here is a list which describes the relationship between the distance and the cost.
Your neighbor is a person who is a really miser. He asked you to help him to calculate the minimum cost between the two stations he listed. Can you solve this problem for him?
To simplify this problem, you can assume that all the stations are located on a straight line. We use x-coordinates to describe the stations’ positions.
Input
The input consists of several test cases. There is a single number above all, the number of cases. There are no more than 20 cases.
Each case contains eight integers on the first line, which are L1, L2, L3, L4, C1, C2, C3, C4, each number is non-negative and not larger than 1,000,000,000. You can also assume that L1<=L2<=L3<=L4.
Two integers, n and m, are given next, representing the number of the stations and questions. Each of the next n lines contains one integer, representing the x-coordinate of the ith station. Each of the next m lines contains two integers, representing the start point and the destination.
In all of the questions, the start point will be different from the destination.
For each case,2<=N<=100,0<=M<=500, each x-coordinate is between -1,000,000,000 and 1,000,000,000, and no two x-coordinates will have the same value.
Each case contains eight integers on the first line, which are L1, L2, L3, L4, C1, C2, C3, C4, each number is non-negative and not larger than 1,000,000,000. You can also assume that L1<=L2<=L3<=L4.
Two integers, n and m, are given next, representing the number of the stations and questions. Each of the next n lines contains one integer, representing the x-coordinate of the ith station. Each of the next m lines contains two integers, representing the start point and the destination.
In all of the questions, the start point will be different from the destination.
For each case,2<=N<=100,0<=M<=500, each x-coordinate is between -1,000,000,000 and 1,000,000,000, and no two x-coordinates will have the same value.
Output
For each question, if the two stations are attainable, print the minimum cost between them. Otherwise, print “Station X and station Y are not attainable.” Use the format in the sample.
Sample Input
21 2 3 4 1 3 5 74 212341 44 11 2 3 4 1 3 5 74 1123101 4
Sample Output
Case 1:The minimum cost between station 1 and station 4 is 3.The minimum cost between station 4 and station 1 is 3.Case 2:Station 1 and station 4 are not attainable.
Source
2008 “Sunline Cup” National Invitational Contest
Recommend
wangye | We have carefully selected several similar problems for you: 2722 1596 1385 1142 1548
ac代码
#include<iostream>#include<cstdio>#include<cstring>using namespace std;typedef long long int64;const int64 INF = 1e18;const int VN = 105;int n;int m;int64 d[VN][VN];int64 X[VN];int64 L1,L2,L3,L4;int64 C1,C2,C3,C4;inline int64 abs(int64 x){return x<0?-x:x;}void init(){ for(int i=1; i<=n; ++i){ d[i][i] = 0; for(int j=i+1; j<=n; ++j) d[i][j]=d[j][i]=INF; }}int64 getCost(int64 dist){ if(0<dist && dist<=L1) return C1; if(L1<dist && dist<=L2) return C2; if(L2<dist && dist<=L3) return C3; if(L3<dist && dist<=L4) return C4; return INF;}void Floyd(){ for(int k=1; k<=n; ++k) for(int i=1; i<=n; ++i)if(d[i][k]!=INF) for(int j=1; j<=n; ++j)if(d[k][j]!=INF) d[i][j]=min(d[i][j], d[i][k]+d[k][j]);}int main(){ int T,cas=1; scanf("%d",&T); while(T--){ cin >> L1 >> L2 >> L3 >> L4; cin >> C1 >> C2 >> C3 >> C4; scanf("%d%d",&n,&m); for(int i=1; i<=n; ++i) cin >> X[i]; init(); for(int i=1; i<=n; ++i){ for(int j=i+1; j<=n; ++j){ d[i][j]=d[j][i]=getCost(abs(X[i]-X[j])); } } Floyd(); int u,v; printf("Case %d:\n",cas++); for(int i=0; i<m; ++i){ scanf("%d%d",&u,&v); if(d[u][v]!=INF){ printf("The minimum cost between station %d and station %d is ",u,v); cout << d[u][v] << ".\n"; } else printf("Station %d and station %d are not attainable.\n",u,v); } } return 0;}
0 0
- HDOJ 题目1690Bus System(最短路径)
- hdoj 1690 Bus System 【最短路径】
- [最短路径] HDU 1690 - Bus System
- HDU 1690 Bus System (最短路径bellmamford算法)
- HDOJ 题目3631Shortest Path(最短路径)
- HDOJ 题目2923Einbahnstrasse(最短路径)
- HDOJ 题目1217 Arbitrage(最短路径,Floyd)
- HDOJ 题目2112 HDU Today(最短路径)
- HDOJ 题目2112 HDU Today(最短路径)
- HDOJ 题目1546 Idiomatic Phrases Game(最短路径)
- HDOJ题目3790最短路径问题(最短路径,Dijkstra双权值)
- HDOJ 1690 Bus System(最短路--floyd)
- (step6.2.1)hdu 1690(Bus System——最短路径)
- hdoj 1690 Bus System
- HDOJ题目2544最短路(最短路径,floyd,模板)
- HDOJ题目2544 最短路(最短路径问题,Dijkstra模板)
- hdoj 1548(迪杰斯塔拉-最短路径)
- HDOJ 题目1874 畅通工程续(简单最短路径)
- android获得屏幕高度和宽度
- iOS程序退出
- 九度_题目1371:最小的K个数
- 针对软件企业提供LightSwitch技术培训,技术顾问,产品代工等合作
- 桶排序
- HDOJ 题目1690Bus System(最短路径)
- iOS开发中常用的代码
- 在COCOS2D-X中实现橡皮擦功能
- eclipse 出现 !MESSAGE An error occurred while automatically activating bundle
- poj 1915-BFS
- 数学之美系列十三:信息指纹及其应用
- 你还在为如何写CSS代码白了少年头嘛??
- 非常实用的Android模拟器CMD命令
- 行业应用之手机移动办公