洛谷P1027(Car的旅行路線)

2021-10-09 01:37:16 字數 2345 閱讀 6176

又到暑假了,住在城市 a 的 car 想和朋友一起去城市旅遊。

她知道每個城市都有 4 個飛機場,分別位於乙個矩形的 4 個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第 i 個城市中高速鐵路了的單位里程**為 t

it_i

ti​,任意兩個不同城市的機場之間均有航線,所有航線單位里程的**均為 t。

那麼 car 應如何安排到城市b的路線才能盡可能的節省花費呢?她發現這並不是乙個簡單的問題,於是她來向你請教。

找出一條從城市 a 到 b 的旅遊路線,出發和到達城市中的機場可以任意選取,要求總的花費最少。

第一行為乙個正整數 n,表示有 n 組測試資料。

每組的第一行有 4 個正整數 s,t,a,b。

s 表示城市的個數,t 表示飛機單位里程的**,a,b 分別為城市a,b 的序號。

接下來有 s 行,其中第 i 行均有 7 個正整數xi1

,yi1

,xi2

,yi2

,xi3

,yi3

,t

ix_,y_,x_,y_,x_,y_,t_i

xi1​,y

i1​,

xi2​

,yi2

​,xi

3​,y

i3​,

ti​ ,這當中的 (xi

1,yi

1),(

xi2,

yi2)

,(xi

3,yi

3)

(x_,y_),(x_,y_),(x_,y_)

(xi1​,

yi1​

),(x

i2​,

yi2​

),(x

i3​,

yi3​

)分別是第 i 個城市中任意 3 個機場的座標,t

it_i

ti​為第 i 個城市高速鐵路單位里程的**。

共有 n 行,每行 1 個資料對應測試資料。

保留一位小數。

我們把每個城市看成4個點,簡單的spfa就好了。

對於每一次測試,都可以共用三個陣列,乙個是用來記錄各個點的座標的陣列,乙個是記錄點與點之間距離的陣列,還有乙個是記錄城市四個點之間高速的里程費用,我看到一些人還要memset,但是如果相同位置兩次測試都要用到,那麼後一次測試就會覆蓋,如果用不到,那也不會對後一次測試造成影響。

talking is cheap,show you my code.

#include

#include

#include

#include

#include

using

namespace std;

double map[

401]

[401];

int point[

401][2

];int t[

101]

;int n;

void

get_point

(int j)

if(len23 ==

(len12 + len13))if

(len13 ==

(len12 + len23))}

void

init

(int s,

int t)if(

!(map[k]

[j])

)else

map[j]

[k]= len;}}

else}}

}double

spfa

(int a,

int b,

int s)

dis[a]=0

; use[a]

=true

; queue<

int> q;

q.push

(a);

while

(!q.

empty()

)if((dis[x]

+ map[x]

[i])

< dis[i])}

}}return dis[b];}

void

test_spfa

(int a,

int b,

int s)

} cout << std::fixed << std::

setprecision(1

)<< ans << endl;

}void

test()

init(4

* s, t)

;test_spfa

(a, b,

4* s);}

intmain()

return0;

}

洛谷P1027 Car的旅行路線

又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程 為ti,任意兩個不同城市的機場之間均有航線,所有航線單位里程的 均為t。圖例 從上而下 機場 高速鐵路 ...

洛谷 P1027 Car的旅行路線

又到暑假了,住在城市 aa 的 carcar 想和朋友一起去城市 bb 旅遊。她知道每個城市都有 44 個飛機場,分別位於乙個矩形的 44 個頂點上,同乙個城市中 22 個機場之間有 11 條筆直的高速鐵路,第 ii 個城市中高速鐵路了的單位里程 為 t iti 任意兩個不同城市的機場之間均有航線,...

luogu1027 Car的旅行路線

題目描述 又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程 為ti,任意兩個不同城市的機場之間均有航線,所有航線單位里程的 均為t。圖例 從上而下 機場 ...