hdoj 1690 Bus System
来源:互联网 发布:linux gid是什么意思 编辑:程序博客网 时间:2024/05/21 11:29
Bus System
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7932 Accepted Submission(s): 2077
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.
代码:
#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>using namespace std;#define INF 0x3f3f3f3f3f3f__int64 map[1000][1000],x[1000];int n;void init(){int i,j;for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(i==j)map[i][j]=map[j][i]=0;elsemap[i][j]=map[j][i]=INF;}}}void floyd(){int i,j,k;for(k=1;k<=n;k++){for(i=1;i<=n;i++){for(j=1;j<=n;j++) { if(map[i][j]>map[i][k]+map[k][j]) { map[i][j]=map[i][k]+map[k][j];}}}}}int main(){__int64 T,k=1,i,j,m,d,a,b;__int64 l[5],c[5];scanf("%I64d",&T);while(T--){for(i=1;i<=4;i++){scanf("%I64d",&l[i]);}for(i=1;i<=4;i++){scanf("%I64d",&c[i]);}scanf("%I64d%I64d",&n,&m);init();for(i=1;i<=n;i++){scanf("%I64d",&x[i]);}for(i=1;i<=n;i++){for(j=i+1;j<=n;j++){d=abs(x[i]-x[j]);if(d>0&&d<=l[1])d=c[1];else if(d>l[1]&&d<=l[2])d=c[2];else if(d>l[2]&&d<=l[3])d=c[3];else if(d>l[3]&&d<=l[4])d=c[4];elsed=INF;if(map[i][j]>d)map[i][j]=map[j][i]=d;}}floyd();printf("Case %I64d:\n",k++);while(m--){scanf("%I64d%I64d",&a,&b);if(map[a][b]!=INF)printf("The minimum cost between station %I64d and station %I64d is %I64d.\n",a,b,map[a][b]);elseprintf("Station %I64d and station %I64d are not attainable.\n",a,b);}} return 0;}
0 0
- hdoj 1690 Bus System
- hdoj 1690 Bus System 【最短路径】
- HDOJ 题目1690Bus System(最短路径)
- HDOJ 1690 Bus System(最短路--floyd)
- HDU 1690 Bus System
- HDU 1690 Bus System
- hdu 1690 Bus System
- HDU 1690 Bus System
- HDU 1690 Bus System
- hdu 1690 Bus System
- hdu 1690 Bus System
- HDU 1690 Bus System.
- 1690Bus System
- hdu-1690 Bus System
- hdu 1690 Bus System
- hdu 1690 Bus System
- HDU-1690-Bus System
- HDU-1690-Bus System
- Mysql常用函数
- Delphi 用idhttp 获取网页源码
- GPUImage实战问题解决
- 当我们说数据挖掘的时候我们在说什么
- uboot源码简要分析
- hdoj 1690 Bus System
- Move Zeroes 带测试版
- test code浏览和IE操作FileSystemObject
- 记一次失败的kaggle比赛(1):赛题简介与初次尝试
- First Bad Version 带测试版
- iOS开发之自定义UITableView
- HDU 4975 最大流+判断环
- RecyclerView
- systemctl 命令完全指南