Submission #1310924

#TimeUsernameProblemLanguageResultExecution timeMemory
1310924hitsuuj경주 (Race) (IOI11_race)C++20
31 / 100
245 ms93236 KiB
#include "race.h" #include <bits/stdc++.h> using namespace std; #define pii pair<int,int> #define pb push_back #define ll long long #define inf 1e9 const int lim=2e5; vector<pii>g[lim+10]; ll dis[lim+10]; vector<int>l(lim+10); ll ans=inf,n,k; // somehow semakin besar knya bakalan salah map<ll,ll> dfs(int u,int par,int dep){ map<ll,ll>cur; cur[dis[u]]=dep; for(auto [v,w]:g[u]){ if(v==par) continue; dis[v]=dis[u]+w; map<ll,ll> anak=dfs(v,u,dep+1); if(anak.size()>cur.size()){ swap(cur,anak); } for(auto [x,y]:anak){ if(!y) continue; ll tar=k-x+2*dis[u]; if(tar<0) continue; if(cur[tar]){ ans=min(ans,cur[tar]+y-2*dep); } if(cur[x]) cur[x]=min(cur[x],y); else cur[x]=y; } } return cur; } int best_path(int N, int K, int H[][2], int L[]) { n=N,k=K; for(int i=0;i<n-1;i++){ g[H[i][0]].pb({H[i][1],L[i]}); g[H[i][1]].pb({H[i][0],L[i]}); } dfs(1,-1,0); if(ans==inf) return -1; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...