Submission #441276

#TimeUsernameProblemLanguageResultExecution timeMemory
441276julian33Dreaming (IOI13_dreaming)C++14
0 / 100
53 ms16452 KiB
#include <bits/stdc++.h> #include "dreaming.h" using namespace std; #ifdef LOCAL #define deb(...) logger(#__VA_ARGS__, __VA_ARGS__) template<typename ...Args> void logger(string vars, Args&&... values) { cerr<<vars<<" = "; string delim=""; (...,(cerr<<delim<<values,delim=", ")); cerr<<"\n"; } #else #define deb(...) logger(#__VA_ARGS__, __VA_ARGS__) template<typename ...Args> void logger(string vars, Args&&... values) {} #endif #define pb push_back #define sz(x) (int)(x.size()) typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; template<typename T> inline void maxa(T& a,T b){a=max(a,b);} template<typename T> inline void mina(T& a,T b){a=min(a,b);} const int mxN=1e5+5; vector<pii> graph[mxN]; ll dist[mxN]; int ep,seen[mxN]; vector<int> path; void dfs(int at,int p){ path.pb(dist[at]); seen[at]=1; if(dist[at]>dist[ep]) ep=at; for(pii &i:graph[at]){ if(i.first!=p){ dist[i.first]=dist[at]+i.second; dfs(i.first,at); } } } void merge(pii &a,pii &b,int L){ if(max(a.first,b.first)>a.second+b.second+L){ a.first=max(a.first,b.first); } else{ a.first=a.second+b.second+L; a.second=max(a.second,b.second)+L; } } int travelTime(int N,int M,int L,int A[],int B[],int T[]){ for(int i=0;i<M;i++){ graph[A[i]].pb({B[i],T[i]}); graph[B[i]].pb({A[i],T[i]}); } vector<pii> all; for(int i=0;i<N;i++){ if(seen[i]) continue; ep=N; dfs(i,-1); path.clear(); dist[ep]=0; dfs(ep,-1); all.pb({dist[ep],*lower_bound(path.begin(),path.end(),dist[ep]/2)}); deb(i,all.back().first,all.back().second); path.clear(); } pii ans=all[0]; deb(ans.first,ans.second); for(int i=1;i<sz(all);i++){ merge(ans,all[i],L); deb(ans.first,ans.second); } return ans.first; }
#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...