Submission #1082945

#TimeUsernameProblemLanguageResultExecution timeMemory
1082945Rawlat_vanakVillage (BOI20_village)C++17
100 / 100
57 ms18376 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define speedIO ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define mod 1000000007 #define ff first #define ss second #define pii pair<int,int> #define pb push_back vector<vector<int>> graph; vector<int> sz,order,depth,ansmx,ansmn; int n,ctrd,fre,sum; void dfs(int u,int p){ order.pb(u); for(int v:graph[u]){ if(v==p) continue; depth[v]=depth[u]+1; dfs(v,u); sz[u]+=sz[v]; } } int centroid(int u, int p){ for(int v:graph[u]){ if(v==p) continue; if(sz[v]*2>n){ return centroid(v,u); } } return u; } bool mindfs(int u,int p){// in subgraph of u is u used or no bool posu=false; int curr=-1; for(int v:graph[u]){ if(v==p) continue; bool flag=mindfs(v,u); if(flag){ }else{ posu=true; if(curr==-1){ ansmn[v]=u; sum+=1; curr=v; }else{ ansmn[v]=curr; sum+=2; curr=v; } } } if(posu){ ansmn[u]=curr; sum+=1; return true; }else{ return false; } } int32_t main(){ speedIO; int t,m,q; //cin>>t; t=1; while(t--){ //string s; cin>>n; graph.clear(); graph.resize(n+1); sz.clear(); sz.resize(n+1,1); order.clear(); depth.clear(); depth.resize(n+1,0); ansmx.clear(); ansmx.resize(n+1); ansmn.clear(); ansmn.resize(n+1,0); for(int i=0;i<n-1;i++){ int u,v; cin>>u>>v; graph[u].pb(v); graph[v].pb(u); } dfs(1,0); ctrd=centroid(1,0); depth.clear(); depth.resize(n+1,0); order.clear(); dfs(ctrd,0); int mx=0; for(int i=1;i<=n;i++){ mx+=depth[i]; ansmx[order[i-1]]=order[(i-1+n+(n/2))%n]; } mx*=2; sum=0; mindfs(ctrd,0); if(ansmn[ctrd]==0){ int x=graph[ctrd][0]; ansmn[ctrd]=ansmn[x]; ansmn[x]=ctrd; sum+=2; } cout<<sum<<' '<<mx<<'\n'; for(int i=1;i<=n;i++){ cout<<ansmn[i]<<' '; } cout<<'\n'; for(int i=1;i<=n;i++){ cout<<ansmx[i]<<' '; } cout<<'\n'; } //} return 0; }

Compilation message (stderr)

Village.cpp: In function 'int32_t main()':
Village.cpp:70:8: warning: unused variable 'm' [-Wunused-variable]
   70 |  int t,m,q;
      |        ^
Village.cpp:70:10: warning: unused variable 'q' [-Wunused-variable]
   70 |  int t,m,q;
      |          ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...