#include <bits/stdc++.h>
#include "race.h"
using namespace std;
#define ll long long
#define pb push_back
#define pii pair<int,int>
#define f first
#define s second
#define chmin(a, b) a = min(a,b)
#define chmax(a, b) a = max(a,b)
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define F0R(i, a) for (int i = 0; i < (a); i++)
#define all(x) x.begin(),x.end()
#define vec vector
const int MAX_N = 2e5;
vec<pii> adj[MAX_N];
map<ll,ll> dist[MAX_N];
ll weight[MAX_N] = {0}, unweight[MAX_N] = {0};
ll ans = INT_MAX;
int k2;
void dfs(int cur, int par) {
    dist[cur][0] = 0;
    for (auto[x,w] : adj[cur]) {
        if (x!=par) {
            dfs(x,cur);
            weight[x] += w;
            unweight[x]++;
            if (dist[x].size()>dist[cur].size()) {
                swap(dist[x],dist[cur]);
                swap(weight[x],weight[cur]);
                swap(unweight[x],unweight[cur]);
            }
            for (auto[x2,w2] : dist[x]) {
                ll x3 = k2-(x2+weight[x])-weight[cur], w3 = w2+unweight[x];
                if (dist[cur].count(x3)) {
                    chmin(ans,dist[cur][x3]+unweight[cur]+w3);
                }
            }
            for (auto[x2,w2] : dist[x]) {
                ll x3 = x2+weight[x]-weight[cur], w3 = w2+unweight[x]-unweight[cur];
                if (dist[cur].count(x3)) {
                    chmin(dist[cur][x3],w3);
                } else {
                    dist[cur][x3] = w3;
                }
            }
        }
    }
    //if (cur==1) {cout << weight[3] << '\n';cout << dist[cur].count(4-weight[cur])<<'\n';}
}
int best_path(int n, int k, int h[][2], int l[]) {
    k2 = k;
    for (int i=0;i<n-1;i++) {
        adj[h[i][0]].pb({h[i][1],l[i]});
        adj[h[i][1]].pb({h[i][0],l[i]});
    }
}
/*int main() {
    ios::sync_with_stdio(false); cin.tie(0);
    int n, k; cin >> n >> k;
    k2 = k;
    vec<int> ad(n-1), ad2(n-1);
    F0R(i,n-1) {
        cin >> ad[i] >> ad2[i];
    }
    F0R(i,n-1) {
        int a; cin >> a;
        adj[ad[i]].pb({ad2[i],a});
        adj[ad2[i]].pb({ad[i],a});
    }
    dfs(0,0);
    cout << (ans==INT_MAX ? -1 : ans) << '\n';
}*/
컴파일 시 표준 에러 (stderr) 메시지
race.cpp: In function 'int best_path(int, int, int (*)[2], int*)':
race.cpp:65:1: warning: no return statement in function returning non-void [-Wreturn-type]
   65 | }
      | ^| # | 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... |