upc 小說 分層最短路

2021-09-27 07:37:04 字數 1360 閱讀 5632

時間限制: 1 sec  記憶體限制: 128 mb

提交: 88  解決: 36

[提交] [狀態] [命題人:admin]

題目描述

輸入第1行三個整數n,m,k,意思如題目描述。

第2到第n+1行是x,y,z指走連線x號小區和y號小區的主幹道要耗費z點體力

輸出一行乙個整數,表示小s最少耗費的體力。

複製樣例資料

5 7 1

1 2 5

3 1 4

2 4 8

3 2 3

5 2 9

3 4 7

4 5 6

樣例輸出

4
提示

小s的行走路線:1->3->2->5,其中2->5這條主幹道由小z幫助小s通過。

對於30%的資料:n<=20;m<=100;

對於60%的資料:n<=100;m<=1000;

對於100%的資料:n<=1000;m<=10000;z<=1000000;

題解:有k次機會 ,與以前做過的乙個題很像,每次使用一次機會就去到新的一層,建好圖之後跑一遍 最短路最大值。

ac:

#include #include #include #pragma gcc optimize(2)

typedef long long ll;

typedef unsigned long long ull;

const int mod=998244353;

const int maxn=1e6+5;

const ll inf=10000000000000005;

using namespace std;

ll n,m,p;

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}struct nodeedge[maxn];

ll cnt=0;

int head[maxn];

ll dis[maxn];

bool vis[maxn];

void addedge(int u,int v,ll w)

; head[u]=cnt++;

}void spfa()}}

}}int main()

for(int k=1;k<=p;k++)

}spfa();

if(dis[p*n+n]==inf) printf("-1\n");

else printf("%lld\n",dis[p*n+n]);

return 0;

}

這個題意確實有點難懂

分層最短路

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

分層最短路

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

小雨坐地鐵 (分層最短路 建立虛點)

思路 建立乙個虛點層,題目等價於求虛點層起點到終點的最小花費。同一層邊花費b,虛點層到其他每層花費a。跑一邊dijkstra即可。ac include using namespace std const int n 1e6 5,inf 0x3f3f3f3f struct edgee n int h ...