Submission #1288298

#TimeUsernameProblemLanguageResultExecution timeMemory
1288298m.zeeshanrashidRace (IOI11_race)C++20
9 / 100
389 ms32268 KiB
#ifdef __AVX2__ #pragma GCC target "avx2" #endif #pragma GCC optimize "O3" #pragma GCC optimize "unroll-loops" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; // #define int long long #define elif else if #define all(l) begin(l),end(l) #define rall(l) rbegin(l),rend(l) #define append push_back #define print(l) for(auto i:l) cout<<i<<' '; cout<<endl; #define pprint(a,b) cout<<a<<' '<<b<<endl; #define inp(l) for(auto &i:l) cin>>i; #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> #define pai make_pair #define endl "\n" #define pii pair<int,int> #define fi first #define se second #define vec vector // const int mod=998244353; const int mod1=998244353; const int mod=1e9+7; const int N=2e5+5; set<pii>s[N]; vec<pii>G[N]; int dis[N],dep[N]; int n,k; int dfs(int u,int p){ int ans=1e9; s[u].insert({dis[u],dep[u]}); int ind=-1,ma=-1; for(auto [v,w]:G[u]){ if(v==p) continue; dis[v]=dis[u]+w; dep[v]=dep[u]+1; ans=min(ans,dfs(v,u)); if((int)s[v].size()>ma){ ind=v; ma=s[v].size(); } } if(ma<0){ // cout<<u<<endl; return ans; } swap(s[u],s[ind]); for(auto [v,w]:G[u]){ if(v==p) continue; for(auto [x,y]:s[v]){ if(x>dis[u]+k) continue; int g=(k-(x-dis[u]))+dis[u]; pii idk={g,0}; pii temp=*lower_bound(all(s[u]),idk); if(temp.fi==g) ans=min(ans,(y+temp.se)-dep[u]*2); } // if(u==1) cout<<"11 "<<v<<endl; for(auto [x,y]:s[v]) s[u].insert({x,y}); } return ans; } int best_path(int N, int K, int H[][2], int L[]){ n=N; k=K; for(int i=0;i<n-1;i++){ int u=H[i][0],v=H[i][1],w=L[i]; G[u].append({v,w}); G[v].append({u,w}); } int ans=dfs(0,-1); if(ans>n) return -1; return ans; // return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...