6678 | 2023. 12. 15 22:43:16 | anon | Villanyautó | cpp17 | Elfogadva 60/60 | 731ms | 4272 KiB |
#include <bits/stdc++.h>
#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define all(x) x.begin(), x.end()
typedef long long ll;
using namespace std;
const ll INF = ~(1LL << 63);
ll N, M, K;
bool walk(ll node, ll C, vector<vector<array<ll, 2>>> &G) {
ll i;
unordered_set<ll> vis(N);
vector<array<ll, 2>> best(N + 1, { -1, -1 });
queue<array<ll, 3>> q;
q.push({ node, K, 0 });
while(!q.empty()) {
array<ll, 3> cs = q.front();
q.pop();
vis.insert(cs[0]);
if(vis.size() == N)
return true;
if(best[cs[0]][0] != -1 && (best[cs[0]][0] > cs[1] || (best[cs[0]][0] == cs[1] && best[cs[0]][1] >= cs[2])))
continue;
best[cs[0]][0] = cs[1];
best[cs[0]][1] = cs[2];
for(const auto &x : G[cs[0]]) {
if(x[1] <= cs[2])
q.push({ x[0], cs[1], cs[2] - x[1] });
else if(x[1] <= C && cs[1] > 0)
q.push({ x[0], cs[1] - 1, C - x[1] });
}
}
return vis.size() == N;
}
int main() {
FastIO;
ll i, n1, n2, C, bsmin, bsmax;
cin >> N >> M >> K;
vector<vector<array<ll, 2>>> G(N + 1);
bsmin = INF;
bsmax = 0;
for(i = 0; i < M; i++) {
cin >> n1 >> n2 >> C;
G[n1].push_back({ n2, C });
G[n2].push_back({ n1, C });
bsmin = min(C, bsmin);
bsmax += C;
}
while(bsmin != bsmax - 1) {
C = bsmin + (bsmax - bsmin) / 2;
for(i = 1; i <= N; i++) {
if(!walk(i, C, G)) {
bsmin = C;
goto next;
}
}
bsmax = C;
next:;
}
cout << bsmax << '\n';
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 60/60 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1832 KiB | |||
2 | Elfogadva | 0/0 | 731ms | 2540 KiB | |||
3 | Elfogadva | 1/1 | 27ms | 2400 KiB | |||
4 | Elfogadva | 1/1 | 32ms | 2708 KiB | |||
5 | Elfogadva | 1/1 | 35ms | 3116 KiB | |||
6 | Elfogadva | 2/2 | 128ms | 2808 KiB | |||
7 | Elfogadva | 2/2 | 167ms | 3320 KiB | |||
8 | Elfogadva | 2/2 | 263ms | 3676 KiB | |||
9 | Elfogadva | 1/1 | 6ms | 3032 KiB | |||
10 | Elfogadva | 1/1 | 4ms | 3108 KiB | |||
11 | Elfogadva | 1/1 | 4ms | 3184 KiB | |||
12 | Elfogadva | 2/2 | 20ms | 3204 KiB | |||
13 | Elfogadva | 2/2 | 12ms | 3344 KiB | |||
14 | Elfogadva | 2/2 | 8ms | 3192 KiB | |||
15 | Elfogadva | 3/3 | 12ms | 3412 KiB | |||
16 | Elfogadva | 3/3 | 82ms | 3796 KiB | |||
17 | Elfogadva | 2/2 | 14ms | 3432 KiB | |||
18 | Elfogadva | 2/2 | 32ms | 3672 KiB | |||
19 | Elfogadva | 2/2 | 35ms | 3688 KiB | |||
20 | Elfogadva | 2/2 | 41ms | 3852 KiB | |||
21 | Elfogadva | 2/2 | 97ms | 3580 KiB | |||
22 | Elfogadva | 2/2 | 10ms | 3504 KiB | |||
23 | Elfogadva | 3/3 | 64ms | 3508 KiB | |||
24 | Elfogadva | 3/3 | 160ms | 3836 KiB | |||
25 | Elfogadva | 3/3 | 167ms | 3992 KiB | |||
26 | Elfogadva | 3/3 | 254ms | 4272 KiB | |||
27 | Elfogadva | 3/3 | 558ms | 3824 KiB | |||
28 | Elfogadva | 3/3 | 78ms | 3516 KiB | |||
29 | Elfogadva | 3/3 | 64ms | 3792 KiB | |||
30 | Elfogadva | 3/3 | 96ms | 3860 KiB |