#include <bits/stdc++.h>
using namespace std;using f64 = double;using i64=long long;using u64=unsigned long long;
template<typename T> using Arr=vector<T>;
#define hfor(v, s, e) for(int v=(s);(s)<=v&&v<(e);++v)//half-opened range
#define hfori(v, s, e) for(int v=(e)-1;(s)<=v&&v<(e);--v)//inversion
#define hforo(v, s, e) int v=(s);for(;(s)<=v&&v<(e);++v)//out declaration
#define hforoi(v, s, e) int v=(e)-1; for(;(s)<=v&&v<(e);--v)
#define cfor(v, s, e) hfor(v,(s),(e)+1)//closed range
#define cfori(v, s, e) hfori(v,(s),(e)+1)
#define cforo(v, s, e) hforo(v,(s),(e)+1)
#define cforoi(v, s, e) hforoi(v,(s),(e)+1)
#define rep(v,x) hfor(v,0,(x))
#define repi(v,x) hfori(v,0,(x))
#define repo(v,x) hforo(v,0,(x))
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
#define pushb push_back
#define pushf push_front
#define popb pop_back
#define popf pop_front
#define empl emplace
#define emplb emplace_back
#define emplf emplace_front
#define fi first
#define se second
#define cxp constexpr
#define PQ std::priority_queue
#ifndef DEBUG
#pragma GCC optimize ("Ofast")
auto __PRE_RUN__=(ios::sync_with_stdio(0), cin.tie(0), cout.tie(0),(cout<<fixed<<setprecision(11)), 0);
#endif
template<typename T> cxp T inf() { return numeric_limits<T>::max() / 2; }
auto mapf(auto a, auto f){for(auto& x:a)x=f(x); return a;}
int rd(int lb, int ub){static mt19937 rng(time(0)^i64(new int)); return uniform_int_distribution<int>(lb, ub-1)(rng);}
int rd(int ub=inf<int>()){return rd(0,ub);}
const f64 pi=acosl(-1);
#define endl '\n'//not interactive?
#define int i64//MLE?
using pint = pair<int,int>;
using tint = tuple<int,int,int>;
const int N=200000;
int n,k;
Arr<pint> t[N];
int s[N];
int d[N];
int ct(int v, int sz_tot){
int mx=-1;
for(auto i:t[v])
if(!d[i.fi] and (mx<0 or s[mx]<s[i.fi]))
mx=i.fi;
if(mx<0 or s[mx]*2<=sz_tot)
return v;
d[v]++;
int ret=ct(mx, sz_tot);
d[v]--;
return ret;
}
int recalc(int v){
d[v]++;
s[v]=1;
for(auto i:t[v])
if(!d[i.fi])
s[v]+=recalc(i.fi);
d[v]--;
return s[v];
}
void get_paths(int v, int dist, int cnt, multiset<pint>& z){
z.insert({dist,cnt});
if(d[v])
return;
d[v]++;
for(auto i:t[v])
if(!d[i.fi])
get_paths(i.fi, dist+i.se, cnt+1, z);
d[v]--;
}
int f(int v){
recalc(v);
v=ct(v, s[v]);
d[v]++;
int ret=inf<int>();
multiset<pint> z;
z.insert({0,0});
for(auto i:t[v]){
multiset<pint> y;
if(!d[i.fi])
get_paths(i.fi, i.se, 1, y);
for(auto j:y){
auto it = z.lower_bound({k-j.fi,0});
if(it!=z.end() and it->fi==k-j.fi)
ret=min(ret, j.se+it->se);
}
z.insert(all(y));
}
for(auto i:t[v])
if(!d[i.fi])
ret=min(ret, f(i.fi));
//d[v]--;
return ret;
}
#include "race.h"
signed best_path(signed N, signed K, signed H[][2], signed L[])
{
n=N;k=K;
rep(i,n-1){
t[H[i][0]].push_back({H[i][1],L[i]});
t[H[i][1]].push_back({H[i][0],L[i]});
}
int ans=f(0);
return ans==inf<int>()?-1:ans;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
5112 KB |
Output is correct |
2 |
Correct |
5 ms |
5116 KB |
Output is correct |
3 |
Correct |
6 ms |
5112 KB |
Output is correct |
4 |
Correct |
6 ms |
5112 KB |
Output is correct |
5 |
Correct |
6 ms |
5112 KB |
Output is correct |
6 |
Correct |
7 ms |
5112 KB |
Output is correct |
7 |
Correct |
7 ms |
5112 KB |
Output is correct |
8 |
Correct |
7 ms |
5112 KB |
Output is correct |
9 |
Correct |
7 ms |
5112 KB |
Output is correct |
10 |
Correct |
6 ms |
5112 KB |
Output is correct |
11 |
Correct |
6 ms |
5112 KB |
Output is correct |
12 |
Correct |
6 ms |
5112 KB |
Output is correct |
13 |
Correct |
8 ms |
5112 KB |
Output is correct |
14 |
Correct |
7 ms |
5020 KB |
Output is correct |
15 |
Correct |
10 ms |
5112 KB |
Output is correct |
16 |
Correct |
7 ms |
5112 KB |
Output is correct |
17 |
Correct |
6 ms |
5032 KB |
Output is correct |
18 |
Correct |
6 ms |
5112 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
5112 KB |
Output is correct |
2 |
Correct |
5 ms |
5116 KB |
Output is correct |
3 |
Correct |
6 ms |
5112 KB |
Output is correct |
4 |
Correct |
6 ms |
5112 KB |
Output is correct |
5 |
Correct |
6 ms |
5112 KB |
Output is correct |
6 |
Correct |
7 ms |
5112 KB |
Output is correct |
7 |
Correct |
7 ms |
5112 KB |
Output is correct |
8 |
Correct |
7 ms |
5112 KB |
Output is correct |
9 |
Correct |
7 ms |
5112 KB |
Output is correct |
10 |
Correct |
6 ms |
5112 KB |
Output is correct |
11 |
Correct |
6 ms |
5112 KB |
Output is correct |
12 |
Correct |
6 ms |
5112 KB |
Output is correct |
13 |
Correct |
8 ms |
5112 KB |
Output is correct |
14 |
Correct |
7 ms |
5020 KB |
Output is correct |
15 |
Correct |
10 ms |
5112 KB |
Output is correct |
16 |
Correct |
7 ms |
5112 KB |
Output is correct |
17 |
Correct |
6 ms |
5032 KB |
Output is correct |
18 |
Correct |
6 ms |
5112 KB |
Output is correct |
19 |
Correct |
2 ms |
5112 KB |
Output is correct |
20 |
Correct |
6 ms |
5112 KB |
Output is correct |
21 |
Correct |
8 ms |
5240 KB |
Output is correct |
22 |
Correct |
9 ms |
5240 KB |
Output is correct |
23 |
Correct |
9 ms |
5240 KB |
Output is correct |
24 |
Correct |
9 ms |
5240 KB |
Output is correct |
25 |
Correct |
10 ms |
5240 KB |
Output is correct |
26 |
Correct |
9 ms |
5244 KB |
Output is correct |
27 |
Correct |
8 ms |
5240 KB |
Output is correct |
28 |
Correct |
8 ms |
5240 KB |
Output is correct |
29 |
Correct |
9 ms |
5240 KB |
Output is correct |
30 |
Correct |
9 ms |
5368 KB |
Output is correct |
31 |
Correct |
8 ms |
5240 KB |
Output is correct |
32 |
Correct |
9 ms |
5240 KB |
Output is correct |
33 |
Correct |
9 ms |
5240 KB |
Output is correct |
34 |
Correct |
8 ms |
5240 KB |
Output is correct |
35 |
Correct |
8 ms |
5240 KB |
Output is correct |
36 |
Correct |
8 ms |
5240 KB |
Output is correct |
37 |
Correct |
8 ms |
5328 KB |
Output is correct |
38 |
Correct |
8 ms |
5240 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
5112 KB |
Output is correct |
2 |
Correct |
5 ms |
5116 KB |
Output is correct |
3 |
Correct |
6 ms |
5112 KB |
Output is correct |
4 |
Correct |
6 ms |
5112 KB |
Output is correct |
5 |
Correct |
6 ms |
5112 KB |
Output is correct |
6 |
Correct |
7 ms |
5112 KB |
Output is correct |
7 |
Correct |
7 ms |
5112 KB |
Output is correct |
8 |
Correct |
7 ms |
5112 KB |
Output is correct |
9 |
Correct |
7 ms |
5112 KB |
Output is correct |
10 |
Correct |
6 ms |
5112 KB |
Output is correct |
11 |
Correct |
6 ms |
5112 KB |
Output is correct |
12 |
Correct |
6 ms |
5112 KB |
Output is correct |
13 |
Correct |
8 ms |
5112 KB |
Output is correct |
14 |
Correct |
7 ms |
5020 KB |
Output is correct |
15 |
Correct |
10 ms |
5112 KB |
Output is correct |
16 |
Correct |
7 ms |
5112 KB |
Output is correct |
17 |
Correct |
6 ms |
5032 KB |
Output is correct |
18 |
Correct |
6 ms |
5112 KB |
Output is correct |
19 |
Correct |
663 ms |
24344 KB |
Output is correct |
20 |
Correct |
626 ms |
24568 KB |
Output is correct |
21 |
Correct |
609 ms |
24824 KB |
Output is correct |
22 |
Correct |
546 ms |
24344 KB |
Output is correct |
23 |
Correct |
728 ms |
23956 KB |
Output is correct |
24 |
Correct |
359 ms |
20488 KB |
Output is correct |
25 |
Correct |
689 ms |
30796 KB |
Output is correct |
26 |
Correct |
529 ms |
30704 KB |
Output is correct |
27 |
Correct |
616 ms |
34040 KB |
Output is correct |
28 |
Correct |
1664 ms |
56108 KB |
Output is correct |
29 |
Correct |
1632 ms |
56100 KB |
Output is correct |
30 |
Correct |
607 ms |
34484 KB |
Output is correct |
31 |
Correct |
613 ms |
34396 KB |
Output is correct |
32 |
Correct |
691 ms |
34208 KB |
Output is correct |
33 |
Correct |
1484 ms |
44160 KB |
Output is correct |
34 |
Correct |
1504 ms |
42464 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
5112 KB |
Output is correct |
2 |
Correct |
5 ms |
5116 KB |
Output is correct |
3 |
Correct |
6 ms |
5112 KB |
Output is correct |
4 |
Correct |
6 ms |
5112 KB |
Output is correct |
5 |
Correct |
6 ms |
5112 KB |
Output is correct |
6 |
Correct |
7 ms |
5112 KB |
Output is correct |
7 |
Correct |
7 ms |
5112 KB |
Output is correct |
8 |
Correct |
7 ms |
5112 KB |
Output is correct |
9 |
Correct |
7 ms |
5112 KB |
Output is correct |
10 |
Correct |
6 ms |
5112 KB |
Output is correct |
11 |
Correct |
6 ms |
5112 KB |
Output is correct |
12 |
Correct |
6 ms |
5112 KB |
Output is correct |
13 |
Correct |
8 ms |
5112 KB |
Output is correct |
14 |
Correct |
7 ms |
5020 KB |
Output is correct |
15 |
Correct |
10 ms |
5112 KB |
Output is correct |
16 |
Correct |
7 ms |
5112 KB |
Output is correct |
17 |
Correct |
6 ms |
5032 KB |
Output is correct |
18 |
Correct |
6 ms |
5112 KB |
Output is correct |
19 |
Correct |
2 ms |
5112 KB |
Output is correct |
20 |
Correct |
6 ms |
5112 KB |
Output is correct |
21 |
Correct |
8 ms |
5240 KB |
Output is correct |
22 |
Correct |
9 ms |
5240 KB |
Output is correct |
23 |
Correct |
9 ms |
5240 KB |
Output is correct |
24 |
Correct |
9 ms |
5240 KB |
Output is correct |
25 |
Correct |
10 ms |
5240 KB |
Output is correct |
26 |
Correct |
9 ms |
5244 KB |
Output is correct |
27 |
Correct |
8 ms |
5240 KB |
Output is correct |
28 |
Correct |
8 ms |
5240 KB |
Output is correct |
29 |
Correct |
9 ms |
5240 KB |
Output is correct |
30 |
Correct |
9 ms |
5368 KB |
Output is correct |
31 |
Correct |
8 ms |
5240 KB |
Output is correct |
32 |
Correct |
9 ms |
5240 KB |
Output is correct |
33 |
Correct |
9 ms |
5240 KB |
Output is correct |
34 |
Correct |
8 ms |
5240 KB |
Output is correct |
35 |
Correct |
8 ms |
5240 KB |
Output is correct |
36 |
Correct |
8 ms |
5240 KB |
Output is correct |
37 |
Correct |
8 ms |
5328 KB |
Output is correct |
38 |
Correct |
8 ms |
5240 KB |
Output is correct |
39 |
Correct |
663 ms |
24344 KB |
Output is correct |
40 |
Correct |
626 ms |
24568 KB |
Output is correct |
41 |
Correct |
609 ms |
24824 KB |
Output is correct |
42 |
Correct |
546 ms |
24344 KB |
Output is correct |
43 |
Correct |
728 ms |
23956 KB |
Output is correct |
44 |
Correct |
359 ms |
20488 KB |
Output is correct |
45 |
Correct |
689 ms |
30796 KB |
Output is correct |
46 |
Correct |
529 ms |
30704 KB |
Output is correct |
47 |
Correct |
616 ms |
34040 KB |
Output is correct |
48 |
Correct |
1664 ms |
56108 KB |
Output is correct |
49 |
Correct |
1632 ms |
56100 KB |
Output is correct |
50 |
Correct |
607 ms |
34484 KB |
Output is correct |
51 |
Correct |
613 ms |
34396 KB |
Output is correct |
52 |
Correct |
691 ms |
34208 KB |
Output is correct |
53 |
Correct |
1484 ms |
44160 KB |
Output is correct |
54 |
Correct |
1504 ms |
42464 KB |
Output is correct |
55 |
Correct |
40 ms |
7220 KB |
Output is correct |
56 |
Correct |
43 ms |
7132 KB |
Output is correct |
57 |
Correct |
595 ms |
24168 KB |
Output is correct |
58 |
Correct |
126 ms |
19044 KB |
Output is correct |
59 |
Correct |
522 ms |
30712 KB |
Output is correct |
60 |
Correct |
1686 ms |
56356 KB |
Output is correct |
61 |
Correct |
622 ms |
34168 KB |
Output is correct |
62 |
Correct |
592 ms |
34332 KB |
Output is correct |
63 |
Correct |
699 ms |
34068 KB |
Output is correct |
64 |
Correct |
1617 ms |
44776 KB |
Output is correct |
65 |
Correct |
1277 ms |
43456 KB |
Output is correct |
66 |
Correct |
1662 ms |
56348 KB |
Output is correct |
67 |
Correct |
397 ms |
32836 KB |
Output is correct |
68 |
Correct |
865 ms |
39292 KB |
Output is correct |
69 |
Correct |
843 ms |
39668 KB |
Output is correct |
70 |
Correct |
703 ms |
38008 KB |
Output is correct |