제출 #109432

#제출 시각아이디문제언어결과실행 시간메모리
109432amiratou꿈 (IOI13_dreaming)C++14
14 / 100
75 ms13428 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]; int comp[100005]; vector<int> nodes; int dfs(int node,int d){ int ans=1; 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}; ans+=dfs(child.fi,d+child.se); } return ans; } pair<int,int> findCenter(int node){ maxi=0; int s=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}); //cout<<maxi-sh<<" "<<c<<"\n"; 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; //cout<<centroid<<" "<<ans; for (int i = 1; i < tree_d.size(); ++i) { ans=max(ans,center[tree_d[i].se].se+center[tree_d[0].se].se+L); ans=max(ans,tree_d[i].fi); } /*for (int i = 1; i < tree_d.size(); ++i) { vec[center[tree_d[i].se].fi].push_back({center[tree_d[0].se].fi,2}); vec[center[tree_d[0].se].fi].push_back({center[tree_d[i].se].fi,2}); } maxi=0; memset(p,-1,sizeof p); dfs(0,0); nodes.clear(); int b=a; memset(p,-1,sizeof p); maxi=0; dfs(b,0);*/ return ans; }

컴파일 시 표준 에러 (stderr) 메시지

dreaming.cpp: In function 'std::pair<int, int> findCenter(int)':
dreaming.cpp:30:6: warning: unused variable 's' [-Wunused-variable]
  int s=dfs(node,0);
      ^
dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:59:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 1; i < tree_d.size(); ++i)
                  ~~^~~~~~~~~~~~~~~
dreaming.cpp:57:6: warning: unused variable 'centroid' [-Wunused-variable]
  int centroid=center[0].first,ans=tree_d[0].fi,max_d=0;
      ^~~~~~~~
dreaming.cpp:57: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...