hdu1690 Bus System (dijkstra)
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.
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.
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
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>
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)的更多相关文章
- hdu1690 Bus System(最短路 Dijkstra)
Problem Description Because of the huge population of China, public transportation is very important ...
- hdu 1690 Bus System(Dijkstra最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1690 Bus System Time Limit: 2000/1000 MS (Java/Others ...
- HDU ACM 1690 Bus System (SPFA)
Bus System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 1690 Bus System (有点恶心)
Problem Description Because of the huge population of China, public transportation is very important ...
- hdu 1690 Bus System (最短路径)
Bus System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 1690 Bus System
题目大意:给出若干巴士不同价格的票的乘坐距离范围,现在有N个站点,有M次询问,查询任意两个站点的最小花费 解析:由于是多次查询不同站点的最小花费,所以用弗洛伊德求解 时间复杂度(O^3) 比较基础的弗 ...
- Bus System(Flody)
http://acm.hdu.edu.cn/showproblem.php?pid=1690 坑爹的题,必须用__int64 %I64d(以前没用过) 因为这题的数据特别大,所以用-1 #includ ...
- Chrysler -- CCD (Chrysler Collision Detection) Data Bus
http://articles.mopar1973man.com/general-cummins/34-engine-system/81-ccd-data-bus CCD (Chrysler Coll ...
- Bus Pass
ZOJ Problem Set - 2913 Bus Pass Time Limit: 5 Seconds Memory Limit: 32768 KB You travel a lot b ...
随机推荐
- cocos2d-x 制作资源下载页面
开发游戏中用到从http 服务器下载文件的操作,所以要有个界面显示下载进度,同时联网采用curl库,因为下载是同步的操作,所以用了多线程 啥也不说,直接贴代码.我是采用ccbi做的页面,你也可以做一个 ...
- javascript 偏移量
通过四个属性可以获得元素的偏移量: 1.offsetHeight: 元素在垂直方向上占用的空间的大小,(像素).包括元素的高度,(可见的)水平滚动条的高度,上边框高度和下边框高度. 2.offsetW ...
- URAL 1707. Hypnotoad's Secret(树阵)
URAL 1707. Hypnotoad's Secret space=1&num=1707" target="_blank" style="" ...
- Qt中使用OpenCV库
原地址:http://blog.sina.com.cn/s/blog_5c70dfc80100qwi3.html 心情真是好啊,曾经一度想放弃使用Qt加OpenCV进行数字图像处理了,幸好坚持住了,今 ...
- 在chrome中使用axure生成原型的问题
来自:非原型不设计
- GitHub详解(转)
GitHub 是一个共享虚拟主机服务,用于存放使用Git版本控制的软件代码和内容项目.它由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath.PJ Hyett ...
- QT---系统托盘图标不显示原因
很久没用QT写UI相关的东西了,有些东西都忘记了,今天竟然忘记了系统托盘图标是怎么显示的了.下面说下解决方法 1.现象, 设置了QSystemTrayIcon的Icon图标,但就是不显示自己设置的图片 ...
- 王立平--PopupWindow
MainActivity.java <span style="font-size:14px;">package com.main; import android.app ...
- 基于unity3d和leap motion的拼图游戏
近期用unity3d引擎做了一个拼图游戏,会分几次写完,以此作为总结. 本文基本查找了网上能查到的全部资料作为參考.也算是大家节省了时间. 眼下仅仅完毕了拼图部分,leap motion手势控制部分会 ...
- 异常与诊断(74篇,内含许多WinDBG的文章)
http://www.cnblogs.com/lidabo/category/542683.html