題目描述
又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程**為ti,任意兩個不同城市的機場之間均有航線,所有航線單位里程的**均為t。
圖例(從上而下)
機場 高速鐵路
飛機航線
注意:圖中並沒有
標出所有的鐵路與航線。
那麼car應如何安排到城市b的路線才能盡可能的節省花費呢?她發現這並不是乙個簡單的問題,於是她來向你請教。
找出一條從城市a到b的旅遊路線,出發和到達城市中的機場可以任意選取,要求總的花費最少。
輸入輸出格式
輸入格式:
第一行為乙個正整數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行,每行乙個資料對應測試資料。 保留一位小數
輸入輸出樣例
輸入樣例#1:
1 3 10 1 3
1 1 1 3 3 1 30
2 5 7 4 5 2 1
8 6 8 8 11 6 3
輸出樣例#1:
47.5
【分析】
這題還考向量…
也就是矩形的構建
用 floyed 即可
【**】
//noip 2001 car的旅行路線
#include
#include
#include
#include
#include
#define mp make_pair
#define m(a) memset(a,0,sizeof a)
#define fo(i,j,k) for(i=j;i<=k;i++)
using
namespace
std;
const
double inf=1e8;
const
int mxn=105;
int n,s,t,a,b;
intmap[10005][2],t[mxn];
double dis[mxn][mxn];
inline
double calc(int j1,int j2,int mul)
inline
double calc(int j1,int j2)
int main()
num=s*4;
fo(k,1,num)
fo(i,1,num)
fo(j,1,num)
if(i!=j && j!=k && i!=k)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
fo(i,(a-1)*4+1,(a-1)*4+4)
fo(j,(b-1)*4+1,(b-1)*4+4)
if(i!=j)
ans=min(ans,dis[i][j]);
if(a==b) ans=0.0;
printf("%.1lf\n",ans);
}return
0;}
最短路 NOIP2001 CAR的旅行路線
第四題 car的旅行路線 p4.pas c cpp p4.in p4.out 問題描述 又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程 為ti,任意兩個...
NOIP2001 Car的旅行線路
題目描述 點選此處 解題思路 平行四邊形相對頂點的橫座標 縱座標之和分別相等。將所有機場的座標都算出來之後,再根據題目描述連邊,從出發地的四個機場或到達地的四個機場分別做單源點最短路。實現 include include include include include include using n...
NOIP提高組2001 Car的旅行路線
問題描述 又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程 為ti,任意兩個不同城市的機場之間均有航線,所有航線單位里程的 均為t。那麼car應如何安排到...