時間限制: 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 ...