P4568 JLOI2011 飛行路線

2021-10-08 21:34:24 字數 1902 閱讀 9877

alice 和 bob 現在要乘飛機旅行,他們選擇了一家相對便宜的航空公司。該航空公司一共在nn個城市設有業務,設這些城市分別標記為 00 到 n-1n−1,一共有 mm 種航線,每種航線連線兩個城市,並且航線有一定的**。

alice 和 bob 現在要從乙個城市沿著航線到達另乙個城市,途中可以進行轉機。航空公司對他們這次旅行也推出優惠,他們可以免費在最多 kk 種航線上搭乘飛機。那麼 alice 和 bob 這次出行最少花費多少?

第一行三個整數 n,m,kn,m,k,分別表示城市數,航線數和免費乘坐次數。

接下來一行兩個整數 s,ts,t,分別表示他們出行的起點城市編號和終點城市編號。

接下來 mm 行,每行三個整數a,b,ca,b,c,表示存在一種航線,能從城市 aa 到達城市 bb,或從城市 bb 到達城市 aa,**為 cc。

輸出一行乙個整數,為最少花費。

輸入 #1複製

5 6 1

0 40 1 5

1 2 5

2 3 5

3 4 5

2 3 3

0 2 100

輸出 #1複製

8
資料規模與約定

對於 30\%30% 的資料,2 \le n \le 50,1 \le m \le 300,k=02≤n≤50,1≤m≤300,k=0。

對於 50\%50% 的資料,2 \le n \le 600,1 \le m \le 6\times10^3,0 \le k \le 12≤n≤600,1≤m≤6×103,0≤k≤1。

對於 100\%100% 的資料,2 \le n \le 10^4,1 \le m \le 5\times 10^4,0 \le k \le 10,0\le s,t,a,b\le n,a\ne b,0\le c\le 10^32≤n≤104,1≤m≤5×104,0≤k≤10,0≤s,t,a,b≤n,a​=b,0≤c≤103。

另外存在一組 hack 資料。

思路:分層最短路板子題。有k層我們就分成k層,也就是把原來的一張平面圖變成一張立體圖。如果原來的圖上第i個點到第j個點有權值邊,我們在上一層的i~下一層的j上放一條權值為0的邊,因為是無向邊,所以在下一層的j~上一層的i放一條權值為0的邊。這樣就變成了在整張立體圖上跑最短路,就符合限制要求了。類似最小生成樹的虛擬源點。

注意題目有一組hack資料就是可能k>n,不是到最後的第k層再到達終點的。通過每層的終點連線權值為0的邊來避免。

#include#include#include#include#include#include#includeusing namespace std;

const int maxn=2e5+100;

typedef long long ll;

typedef pairp;///first最短距離,second頂點的編號

struct edge;

vectorg[maxn];

ll vis[maxn];

ll dis[maxn];

ll n,m,k,start,final;

void dijkstra()

); while(!que.empty())

); }

} }}

int main(void)

);g[y].push_back();

for(ll j=1;j<=k;j++));

g[y+(j-1)*n].push_back();

g[x+j*n].push_back();

g[y+j*n].push_back();

} }

for(ll j=1;j<=k;j++));

} dijkstra();

cout

}

P4568 JLOI2011 飛行路線

alice和bob現在要乘飛機旅行,他們選擇了一家相對便宜的航空公司。該航空公司一共在 nnn 個城市設有業務,設這些城市分別標記為 000 到 n 1n 1n 1 一共有 mmm 種航線,每種航線連線兩個城市,並且航線有一定的 alice和bob現在要從乙個城市沿著航線到達另乙個城市,途中可以進行...

luoguP4568 JLOI2011 飛行路線

題目中 k 的大小只有 10,我們可以考慮建立分層圖跑最短路 相同層中 a b 的權值仍為 val,不同層中 a b 的權值為 0,相當於免費乘坐了一次飛機 寫乙個最短路就可以啦 include define cios ios sync with stdio false define for i,a...

洛谷 4568 JLOI2011 飛行路線

題目戳這裡 一句話題意 有n個點,m條邊的有向圖,最多可以把k條邊變為0,求從起點到終點最短距離。solution 首先看到這題目,感覺賊難,看起來像dp,貌似也有大佬這麼做,但鑑於本蒟蒻思維能力有限,經過大佬點撥後拿出了失傳已久的絕技 分層圖!廢話真多 那麼我們就可以愉快地建圖了,根據題意,建出k...