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 ...
随机推荐
- [置顶] 程序员面试之道(《程序员面试笔试宝典》)之看着别人手拿大把的offer,不淡定了怎么办?
不管是在哪里,不管发生什么事,不要随便放下自己. ——<当男人恋爱时> 很多求职者都会面临一个问题:别人手拿大把大把的offer了,而自己却是两手空空,别人签约之后已经过着“猪狗不如”的悠 ...
- ASP.NET - 网页重定向 Response.Redirect()
在网页中使用重定向,意思就是在网站中的某一个页面跳转到另一个页面. Response.Redirect(~/abc.aspx); 使用“~”的作用是可以从任意位置跳转. 如果没有“~”,那么跳转的时候 ...
- 重操JS旧业第九弹:函数表达式
函数表达式,什么概念,表达式中的函数表达式. 1 函数申明 function 函数名([函数参数]){ //函数体 } js中无论像这样的显示函数什么放在调用之前还是调用之后,都不影响使用,因为js解 ...
- cocos2d-x 精灵移动
在HelloWorldScene.h中声明 class HelloWorld : public cocos2d::CCLayer { public : ...... CCPoin ...
- [置顶] 关于本博客 http://www.imobilebbs.com
由于时间上的关系,本博客不再和引路蜂移动软件博客同步更新, 请直接访问 http://www.imobilebbs.com 谢谢您的支持,再见 引路蜂博客
- MapReduce整体架构分析
继前段时间分析Redis源代码一段时间之后.我即将開始接下来的一段技术学习的征程.研究的技术就是当前很火热的Hadoop,可是一个Hadoop生态圈是很庞大的.所以首先我的打算是挑选当中的一部分模块, ...
- oracle切割字符串后以单列多行展示
原始的sql: select substr(field1, instr(field1, '|', 1, rownum) + 1, instr(field1, '|', 1, rownum + 1) - ...
- 打印org.eclipse.xsd.XSDSchema对象
由于网上关于Eclipse XSD的中文资料比較少,可是有的时候.我们须要使用Eclipse XSD的API去构造或者改动一个XSD文件. 那么当我们创建了org.eclipse.xsd.XSDSch ...
- Linux编程实现守护进程
Linux 守护程序 守护进程(Daemon)它是在一个特定的过程的背景进行.它独立于控制终端的和周期性地执行某些任务或待某些事件.是一种非常实用的进程. Linux的大多数server就是用守护进程 ...
- Bootstrap,Foundation和TypeScript
http://www.oschina.net/question/12_128155 http://www.oschina.net/news/72330/typescript-2-0 给自己提个醒,随时 ...