概述
读懂题意就很好过了
车站只能到车站
#include<stdio.h>
#include<algorithm>
using namespace std;
#define inf 1e18
__int64 l[4],c[4],n,m,map[105][105];
int floyd()
{
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
if(map[k][i]!=inf)
for(int j=1;j<=n;j++)
if(map[i][j]>map[i][k]+map[k][j])
map[i][j]=map[i][k]+map[k][j];
}
void intt()
{
for(int i=1;i<105;i++)
for(int j=1;j<105;j++)
map[i][j]=inf;
}
int main()
{
int t,cas=1;
__int64 tp,st,ed,a[105];
scanf("%d",&t);
while(t--)
{
intt();
for(int i=0;i<4;i++)
scanf("%I64d",&l[i]);
for(int i=0;i<4;i++)
scanf("%I64d",&c[i]);
scanf("%I64d%I64d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%I64d",&a[i]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
int zz=abs(a[i]-a[j]);
if(zz<=l[3]&&zz>l[2])
map[i][j]=c[3];
else if(zz<=l[2]&&zz>l[1])
map[i][j]=c[2];
else if(zz<=l[1]&&zz>l[0])
map[i][j]=c[1];
else if(zz<=l[0]&&zz>0)
map[i][j]=c[0];
}
floyd();
printf("Case %d:n",cas++);
for(int i=0;i<m;i++)
{scanf("%I64d%I64d",&st,&ed);
if(map[st][ed]==inf)
printf("Station %I64d and station %I64d are not attainable.n",st,ed);
else
printf("The minimum cost between station %I64d and station %I64d is %I64d.n",st,ed,map[st][ed]);
}
}
}
最后
以上就是尊敬橘子为你收集整理的HDU1690---Bus System的全部内容,希望文章能够帮你解决HDU1690---Bus System所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复