제출 #1211677

#제출 시각아이디문제언어결과실행 시간메모리
1211677timeflew경주 (Race) (IOI11_race)C++20
0 / 100
72 ms141120 KiB
#include<bits/stdc++.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) { 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-x, 0}); if(it!=s[v].end()&&(*it).ff==k-w-x) { 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++) { s[i].insert({0, 0}); 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...