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.

 
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.

 
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
2
1 2 3 4 1 3 5 7
4 2
1
2
3
4
1 4
4 1
1 2 3 4 1 3 5 7
4 1
1
2
3
10
1 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.
这题一定要注意把INF设的很大,不然会WA
#include<stdio.h>
const long long INF = 99999999999LL;
__int64 map[105][105],node[105];
int n,s[105];
__int64 abs(__int64 a)
{
return a>0?a:-a;
}
void set_1()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
map[i][j]=INF;
}
}
void set_2()
{
for(int i=1;i<=n;i++)
{
s[i]=0; node[i]=INF;
}
}
__int64 dijkstra(int stra,int end)
{
int tstra=stra;
__int64 min;
s[stra]=1; node[stra]=0;
for(int k=2;k<=n;k++)
{
min=INF;
for(int i=1;i<=n;i++)
if(s[i]==0)
{
if(node[i]>map[tstra][i]+node[tstra])
node[i]=map[tstra][i]+node[tstra];
if(min>node[i])
{
min=node[i]; stra=i;
}
}
s[stra]=1; tstra=stra;
if(s[end])
break;
}
if(node[end]==INF)
return -1;
return node[end];
}
int main()
{
int t,m,k=1,cas[505][2];
__int64 l[5],c[5],posit[105],dist;
scanf("%d",&t);
while(t--)
{
for(int i=1;i<=4;i++)
scanf("%I64d",&l[i]);
for(int i=1;i<=4;i++)
scanf("%I64d",&c[i]);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%I64d",&posit[i]); set_1();
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
dist=abs(posit[i]-posit[j]);
if(dist<=l[1])
map[i][j]=map[j][i]=c[1];
else if(dist<=l[2])
map[i][j]=map[j][i]=c[2];
else if(dist<=l[3])
map[i][j]=map[j][i]=c[3];
else if(dist<=l[4])
map[i][j]=map[j][i]=c[4];
} printf("Case %d:\n",k++);
__int64 cost;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&cas[i][0],&cas[i][1]); set_2();
cost=dijkstra(cas[i][0],cas[i][1]);
if(cost!=-1)
printf("The minimum cost between station %d and station %d is %I64d.\n",cas[i][0],cas[i][1],cost);
else
printf("Station %d and station %d are not attainable.\n",cas[i][0],cas[i][1]);
}
}
}

 

hdu1690 Bus System (dijkstra)的更多相关文章

  1. hdu1690 Bus System(最短路 Dijkstra)

    Problem Description Because of the huge population of China, public transportation is very important ...

  2. hdu 1690 Bus System(Dijkstra最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1690 Bus System Time Limit: 2000/1000 MS (Java/Others ...

  3. HDU ACM 1690 Bus System (SPFA)

    Bus System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. hdu 1690 Bus System (有点恶心)

    Problem Description Because of the huge population of China, public transportation is very important ...

  5. hdu 1690 Bus System (最短路径)

    Bus System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. HDU 1690 Bus System

    题目大意:给出若干巴士不同价格的票的乘坐距离范围,现在有N个站点,有M次询问,查询任意两个站点的最小花费 解析:由于是多次查询不同站点的最小花费,所以用弗洛伊德求解 时间复杂度(O^3) 比较基础的弗 ...

  7. Bus System(Flody)

    http://acm.hdu.edu.cn/showproblem.php?pid=1690 坑爹的题,必须用__int64 %I64d(以前没用过) 因为这题的数据特别大,所以用-1 #includ ...

  8. Chrysler -- CCD (Chrysler Collision Detection) Data Bus

    http://articles.mopar1973man.com/general-cummins/34-engine-system/81-ccd-data-bus CCD (Chrysler Coll ...

  9. Bus Pass

    ZOJ Problem Set - 2913 Bus Pass Time Limit: 5 Seconds      Memory Limit: 32768 KB You travel a lot b ...

随机推荐

  1. 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点-----层序遍历的应用题

    题目:对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点:如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL:给出程序实现,并分析时间复杂度和空间复杂度. ...

  2. swap函數 进阶探讨与实现

    相信以下這個C程序非常多人都見過啦.當時自己看 美少女战士谭浩强 写的那本书上的解释.反正我当时是没看太懂详细是什么意思.谱架啊~~~ #include <stdio.h> void sw ...

  3. EasyUI - SplitButton 分割按钮

    效果: html代码: <!--使用标签创建,直接使用即可,不必使用js代码--> <%--<a href="javascript:void(0)" id= ...

  4. CSS未知div高度垂直居中代码_层和布局特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. perl EXPORT模块

    Exporter - Implements default import method for modules 实现模块的默认导出方法: 简介: [tomcat@wx03 ~]$ cat hui.pm ...

  6. 基于visual Studio2013解决面试题之0608找出两个只出现一次的数

     题目

  7. java WEB Response重定向和缓存控制

    package cn.com; import java.io.IOException; import javax.servlet.ServletException; import javax.serv ...

  8. POJ 2594 Treasure Exploration(最小路径覆盖变形)

    POJ 2594 Treasure Exploration 题目链接 题意:有向无环图,求最少多少条路径能够覆盖整个图,点能够反复走 思路:和普通的最小路径覆盖不同的是,点能够反复走,那么事实上仅仅要 ...

  9. 【小白的java成长系列】——javakeyword

    准备出一个系列的内容啦,今天就从keyword開始说起吧~ 类型 keyword 说明 keyword 说明 訪问控制权限 public 公共的.公开的. protected 受保护的.用来修饰属性或 ...

  10. OpenCV中遇到Microsoft C++ 异常 cv::Exception

    我在实现<OpenCV2计算机视觉编程手册>第2章 2.2 节 存取像素值 中的椒盐噪声例子中遇到的程序错误. 原始输入程序: #include <opencv2/core/core ...