Submission #109434

#TimeUsernameProblemLanguageResultExecution timeMemory
109434amiratouDreaming (IOI13_dreaming)C++14
14 / 100
62 ms12020 KiB
#include <bits/stdc++.h> #include "dreaming.h" using namespace std; #define fi first #define se second #define INF (int)(1e9) vector<vector<pair<int,int> > > vec; bool vis[100005]; int maxi=0,A,idx=0; vector<pair<int,int> > tree_d; pair<int,int> p[100005],center[100005]; vector<int> nodes; void dfs(int node,int d){ nodes.push_back(node); if(d>maxi) A=node,maxi=d; vis[node]=1; for(auto child:vec[node]) if(child.fi!=p[node].fi){ vis[child.fi]=1; p[child.fi]={node,child.se}; dfs(child.fi,d+child.se); } } pair<int,int> findCenter(int node){ maxi=0; dfs(node,0); for(auto i:nodes) p[i]={-1,-1}; nodes.clear(); int B=A,sum=0,mini=INF,c=node,sh=INF; maxi=0; dfs(B,0); nodes.clear(); for(;A!=-1;sum+=p[A].se,A=p[A].fi){ if(abs(maxi/2-sum)<mini) mini=abs(maxi/2-sum),c=A,sh=sum; } tree_d.push_back({maxi,idx}); return {c,max(maxi-sh,0)}; } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { vec.resize(N); for (int i = 0; i < M; ++i) { vec[A[i]].push_back({B[i],T[i]}); vec[B[i]].push_back({A[i],T[i]}); } for (int i = 0; i < N; ++i) if(!vis[i]) center[idx++]=findCenter(i); sort(tree_d.begin(),tree_d.end(),greater<pair<int,int> >()); int centroid=center[0].first,ans=tree_d[0].fi,max_d=0; for (int i = 0; i < idx-1; ++i) { if(center[tree_d[i+1].se].se>center[tree_d[i].se].se) centroid=center[tree_d[i+1].se].fi; ans=max(ans,center[tree_d[i+1].se].se+center[tree_d[i].se].se+L); } return ans; }

Compilation message (stderr)

dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:53:6: warning: variable 'centroid' set but not used [-Wunused-but-set-variable]
  int centroid=center[0].first,ans=tree_d[0].fi,max_d=0;
      ^~~~~~~~
dreaming.cpp:53:48: warning: unused variable 'max_d' [-Wunused-variable]
  int centroid=center[0].first,ans=tree_d[0].fi,max_d=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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...