#include<bits/stdc++.h>
#include "race.h"
using namespace std;
#define ll long long
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
const int mxN=2e6;
vector<pair<int, ll>> adj[mxN];
multiset<pair<ll, int>> s[mxN];
int ans=1e9;
int k;
void dfs(int v, int fa) {
s[v].insert({0, 0});
for(auto [u, w] : adj[v]) {
if(u==fa) continue;
dfs(u, v);
if(s[v].size()<s[u].size()) {
s[v].swap(s[u]);
}
for(auto [x, y] : s[u]) {
auto it=s[v].lower_bound({k-w, 0});
if(it!=s[v].end()&&(*it).ff==k-w) {
ans=min(ans, (*it).ss+1);
}
s[v].insert({x+w, y+1});
}
}
}
int best_path(int N, int K, int H[][2], int L[]) {
k=K;
for(int i=0; i<N-1; i++) {
adj[H[i][0]].push_back({H[i][1], L[i]});
adj[H[i][1]].push_back({H[i][0], L[i]});
}
dfs(0, -1);
return (ans==1e9?-1:ans);
}
// int main() {
// ios::sync_with_stdio(0); cin.tie(0);
// int h[11][2], l[11];
// int n, k; cin>>n>>k;
// for(int i=0; i<n-1; i++) {
// cin>>h[i][0]>>h[i][1];
// }
// for(int i=0; i<n-1; i++) {
// cin>>l[i];
// }
// cout<<best_path(n, k, h, l);
// return 0;
// }
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |