Submission #575410

#TimeUsernameProblemLanguageResultExecution timeMemory
575410ogibogi2004Dreaming (IOI13_dreaming)C++14
100 / 100
74 ms22924 KiB
#include "dreaming.h" #include<bits/stdc++.h> using namespace std; const int MAXN=1e5+6; int sz=0; bool vis[MAXN]; std::vector<std::pair<int,int> > g[MAXN]; int mpd[MAXN];// max path down int biggest_current; void dfs_init(int u,int par) { mpd[u]=0; vis[u]=1; vector<int>f; for(auto xd:g[u]) { if(xd.first==par)continue; dfs_init(xd.first,u); mpd[u]=max(xd.second+mpd[xd.first],mpd[u]); f.push_back(mpd[xd.first]+xd.second); } biggest_current=max(biggest_current,mpd[u]); sort(f.rbegin(),f.rend()); if(f.size()>1)biggest_current=max(biggest_current,f[0]+f[1]); } int dfs_find(int u,int par,int len_up) { int ret=max(mpd[u],len_up); int maxd=-1,ch=-1,che=-1; for(auto xd:g[u]) { if(xd.first==par)continue; if(mpd[xd.first]>maxd) { maxd=mpd[xd.first]; ch=xd.first; che=xd.second; } } if(ch==-1) { return ret; } len_up+=che; for(auto xd:g[u]) { if(xd.first==par)continue; if(xd.first==ch)continue; len_up=max(len_up,mpd[xd.first]+che+xd.second); } return min(ret,dfs_find(ch,u,len_up)); } void solve(int u) { dfs_init(u,0); sz=dfs_find(u,0,0); } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { for(int i=0;i<M;i++) { A[i]++; B[i]++; g[A[i]].push_back({B[i],T[i]}); g[B[i]].push_back({A[i],T[i]}); } vector<int>comps; for(int i=1;i<=N;i++) { if(vis[i]==0) { sz=0; solve(i); comps.push_back(sz); } } sort(comps.rbegin(),comps.rend()); int ans=biggest_current; if(comps.size()==1)return max(ans,comps[0]); if(comps.size()==2)return max(ans,comps[0]+comps[1]+L); return max(ans,max(comps[0]+comps[1]+L,comps[1]+comps[2]+L+L)); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...