永发信息网

Car的旅行路线

答案:1  悬赏:70  手机版
解决时间 2021-08-24 15:22

题目:Car的旅行路线

问题编号:216

题目描述

又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t。
图例

机场
高速铁路
飞机航线
 
注意:图中并没有
标出所有的铁路与航线。
那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来向你请教。
任务
找出一条从城市A到B的旅游路线,出发和到达城市中的机场可以任意选取,要求总的花费最少。

输出:到屏幕(输出最小费用,小数点后保留2位。)

输入格式

第一行为一个正整数n(0<=n<=10),表示有n组测试数据。
每组的第一行有四个正整数s,t,A,B。
S(0<S<=100)表示城市的个数,t表示飞机单位里程的价格,A,B分别为城市A,B的序号,(1<=A,B<=S)。
接下来有S行,其中第I行均有7个正整数xi1,yi1,xi2,yi2,xi3,yi3,Ti,这当中的(xi1,yi1),(xi2,yi2),(xi3,yi3)分别是第I个城市中任意三个机场的坐标,T I为第I个城市高速铁路单位里程的价格。

输出格式

共有n行,每行一个数据对应测试数据。

program Project1;
type ww=record
xx,yy:longint;
end;
var
  map:array[1..400,1..100] of extended;
  xxx,yyy:array[1..400]of longint;
  s,t,a,b,x1,y1,x2,y2,x3,y3,tt,n,i,j,k,x,y:longint;
  min:extended;
function dian(x1,y1,x2,y2,x3,y3:longint):ww;{判断直角 并输出第四个点坐标}
    begin
    if (sqr(x1-x2)+sqr(y1-y2)+sqr(x2-x3)+sqr(y2-y3)=sqr(x1-x3)+sqr(y1-y3))
       then  begin dian.xx:=x1+x3-x2;dian.yy:=y1+y3-y2; exit; end;
    if (sqr(x1-x3)+sqr(y1-y3)+sqr(x2-x3)+sqr(y2-y3)=sqr(x1-x3)+sqr(y1-y3))
       then  begin dian.xx:=x1+x2-x3;dian.yy:=y1+y2-y3; exit; end;
    if (sqr(x2-x1)+sqr(y2-y1)+sqr(x3-x1)+sqr(y3-y1)=sqr(x3-x2)+sqr(y3-y2))
       then  begin dian.xx:=x2+x3-x1;dian.yy:=y2+y3-y1;exit;  end;
    end;
begin
readln(n);
readln(s,t,a,b);
for i:=1 to 4*s do
  for j:=1 to 4*s do
     map[i,j]:=9999;
for i:=1 to s do{构造图,城市路径}
  begin
  readln(x1,y1,x2,y2,x3,y3,tt);
  x:=dian(x1,y1,x2,y2,x3,y3).xx;y:=dian(x1,y1,x2,y2,x3,y3).yy;
  map[4*(i-1)+1,4*(i-1)+2]:=sqrt(sqr(x1-x2)+sqr(y1-y2))*tt;
  map[4*(i-1)+2,4*(i-1)+1]:=sqrt(sqr(x1-x2)+sqr(y1-y2))*tt;
  map[4*(i-1)+1,4*(i-1)+3]:=sqrt(sqr(x1-x3)+sqr(y1-y3))*tt;
  map[4*(i-1)+3,4*(i-1)+1]:=sqrt(sqr(x1-x3)+sqr(y1-y3))*tt;
  map[4*(i-1)+1,4*(i-1)+4]:=sqrt(sqr(x1-x)+sqr(y1-y))*tt;
  map[4*(i-1)+4,4*(i-1)+1]:=sqrt(sqr(x1-x)+sqr(y1-y))*tt;
  map[4*(i-1)+2,4*(i-1)+3]:=sqrt(sqr(x2-x3)+sqr(y2-y3))*tt;
  map[4*(i-1)+3,4*(i-1)+2]:=sqrt(sqr(x2-x3)+sqr(y2-y3))*tt;
  map[4*(i-1)+2,4*(i-1)+4]:=sqrt(sqr(x2-x)+sqr(y2-y))*tt;
  map[4*(i-1)+4,4*(i-1)+2]:=sqrt(sqr(x2-x)+sqr(y2-y))*tt;
  map[4*(i-1)+3,4*(i-1)+4]:=sqrt(sqr(x3-x)+sqr(y3-y))*tt;
  map[4*(i-1)+4,4*(i-1)+3]:=sqrt(sqr(x3-x)+sqr(y3-y))*tt;
  xxx[4*(i-1)+1]:=x1;{存坐标}
  xxx[4*(i-1)+2]:=x2;
  xxx[4*(i-1)+3]:=x3;
  xxx[4*(i-1)+4]:=x;
  yyy[4*(i-1)+1]:=y1;
  yyy[4*(i-1)+2]:=y2;
  yyy[4*(i-1)+3]:=y3;
  yyy[4*(i-1)+4]:=y;
  end;
for i:=1 to 4*s do{构造每个点的路径}
  for j:=1 to 4*s do
    if map[i,j]=9999 then map[i,j]:=sqrt(sqr(xxx[i]-xxx[j])+sqr(yyy[i]-yyy[j]))*t;
for k:=1 to 4*s do{Floyd}(Dijkstra没写)
  for i:=1 to 4*s do
    for j:=1 to 4*s do
      if map[i,j]>map[i,k]+map[k,j] then  map[i,j]:=map[i,k]+map[k,j];
for i:=1 to 4 do
  for j:=1 to 4 do
    if min>map[(a-1)*4+i,(b-1)*4+j] then min:=map[(a-1)*4+i,(b-1)*4+j];(16种情况输出最小的)
writeln(min:0:2);
end.  

为什么我写的总是 输出0挖    要这么修改 才能 不输出0  ??

 

最佳答案
How is/was/are/were…? 可换为同义句①what about ②how aboutWhat do you think of the Japanese food?(同义句) ①how is the Japanese food?或②how do you like the Japanese food?Vera 对她的旅行有什么看法?What does Vera think of her journey?How is her journey?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
修武县焦作清香美容美发这个地址怎么能查询到
标准差如何算,标准差怎么算!举个例子!
别克新君越后备箱弹不上去什么原因
好看的英语网名(中英结合也可以)要加符号的
涧西区洛阳千里香馄炖地址在什么地方,想今天
Now the day is coming
梦幻诛仙鬼王宗的狂鬼击分为狂鬼击金和狂鬼击
我想从 威海 到 上海 浦东,谁给介绍 条 经济
升超级QQ三级得用多少经验值?
草履虫在什么样的环境下进行有性生殖?
NOKIA5300不要保密码怎么才可以还原厂设置?
沙洋县荆门好吃佬特色早点川味小吃地址在哪,
微信怎么自己制作链接,微信里的链接是怎么发
从哪个网站可以找到全套的高考试题?
为什么人在围观时总会围成圆
推荐资讯
◆谁是你生命中的“大石头”◆
灵宝市三门峡灵宝市种子公司科里营业部这个地
有关大海著名的诗歌,描写养花心情的诗句
西安厨房设备维修中心在哪儿?成都天河厨房维
江西南昌露台阳光房的价格是多少钱一平方?有
北京菲奥30165稳压阀功能图片好不好
常州二套房贷款利率通常是多少?按什么标准算
杏黄色的室内门搭配米色地砖好吗?
给说下圣象香花梨地板怎么样呗?
进门走廊窄没地方放鞋柜,如何设计哟?
集成吊顶灯更换方法有人晓得吗?有什么需要注
飞机不能托运的物品,要怎么运出去啊?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?