제출 #926075

#제출 시각아이디문제언어결과실행 시간메모리
926075andrei_boacaMeetings 2 (JOI21_meetings2)C++17
20 / 100
4043 ms17748 KiB
#include <bits/stdc++.h> using namespace std; int n,sol[200005],par[200005],reprez[200005],niv[200005],nr[200005]; vector<int> muchii[200005]; void dfs(int nod) { nr[nod]=1; for(int i:muchii[nod]) if(i!=par[nod]) { par[i]=nod; niv[i]=niv[nod]+1; if(reprez[nod]==0) reprez[i]=i; else reprez[i]=reprez[nod]; dfs(i); nr[nod]+=nr[i]; } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i=1;i<n;i++) { int a,b; cin>>a>>b; muchii[a].push_back(b); muchii[b].push_back(a); } for(int i=1;i<=n;i++) sol[i]=1; for(int i=1;i<=n;i++) { par[i]=0; reprez[i]=0; niv[i]=1; dfs(i); for(int j=1;j<=n;j++) if(j!=i) { int poz=2*min(n-nr[reprez[j]],nr[j]); int lg=niv[j]; sol[poz]=max(sol[poz],lg); } } for(int i=(n/2)*2;i>0;i-=2) sol[i]=max(sol[i],sol[i+2]); for(int i=1;i<=n;i++) cout<<sol[i]<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...