#include <bits/stdc++.h>
#define mkt make_tuple
#define all(x) x.begin(),x.end()
#define sz(x) (int)(x.size())
#define ll long long
#define lp(i,a,b) for(int i = a ; i < b ; i++ )
#define pii pair<int,int>
#define mk make_pair
#define ff first
#define ss second
#define tiii tuple<int,int,int>
#define pb push_back
const int MAX = 2e5+10 ;
using namespace std ;
struct Node
{
int a , b , ab , ba , aba ;
Node() { a = b = ab = ba = aba = -MAX ; }
Node operator + ( Node other ) const
{
Node ret ;
ret.ab = max({ ab, other.ab , a + other.b }) ;
ret.ba = max( {ba, other.ba , b + other.a} ) ;
ret.aba = max( {aba,other.aba , ab + other.a , a + other.ba} ) ;
ret.a = max( a , other.a ) ;
ret.b = max( b, other.b ) ;
return ret;
}
} tree[MAX*8] ;
int N ;
int sub[MAX ] , ans[MAX] , dist[MAX] , h[MAX] ;
vector<int> adj[MAX] ;
vector<pii> edg ;
void dfs1(int x, int par){
sub[x] = 1 ;
for(auto e : adj[x] ){
if(e == par ) continue ;
dfs1(e,x) ;
sub[x] += sub[e] ;
}
}
int tin[MAX];
int currTime ;
vector<int> v[MAX] ;
void dfs2(int x, int par){
v[x].pb(++currTime ) ;
sub[x] = 1 ;
for(auto e : adj[x] ){
if(e == par ) continue ;
h[e]=h[x]+1 ;
dfs2(e,x) ;
v[x].pb(++currTime) ;
sub[x] += sub[e] ;
edg.pb(mk(min(sub[e], N-sub[e]) , e ) ) ;
}
}
void upd(int pos, int l, int r,int x, int val ){
if(l == r ){
tree[pos].a = val ;
tree[pos].b = -2*val ;
tree[pos].ab = -val ;
tree[pos].ba = -val ;
return ;
}
int mid = (l+r)>>1 ;
if(x <= mid ) upd(pos<<1 , l , mid , x , val ) ;
else upd(pos<<1|1, mid+1, r, x, val ) ;
tree[pos] = tree[pos<<1]+tree[pos<<1|1] ;
}
int main(){
ios_base::sync_with_stdio(false) ;
cin.tie(0) ;
cin >> N ;
for(int i = 0 , a , b ; i < N-1 ; i++ ){
cin >> a >> b ;
adj[a].pb(b) ;
adj[b].pb(a) ;
}
dfs1(1,-1) ;
int cn = 1 ;
for(int i = 2 ; i <= N ; i++ )
if( sub[i] < sub[cn] && sub[i] > N/2 ) cn = i ;
dfs2(cn,-1) ;
auto coloca = [&](int x){
for(auto e : v[x] ) upd(1,1,currTime, e, h[x] ) ;
} ;
coloca(cn) ;
sort(all(edg) ) ; reverse(all(edg) ) ;
for(auto e : edg ){
int a = e.ff , b = e.ss ;
coloca(b) ;
ans[a] = max(ans[a], tree[1].aba+1) ;
}
for(int i = N ; i >= 0 ; i-- ) ans[i] = max({ans[i], ans[i+1] ,1}) ;
for(int i = 1 ; i <= N ; i++ ) {
if( (i%2) == 1 ) cout << "1\n" ;
else cout << ans[i>>1] <<"\n" ;
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
20 ms |
41036 KB |
Output is correct |
2 |
Correct |
21 ms |
41044 KB |
Output is correct |
3 |
Correct |
19 ms |
41036 KB |
Output is correct |
4 |
Correct |
19 ms |
40948 KB |
Output is correct |
5 |
Correct |
19 ms |
40928 KB |
Output is correct |
6 |
Correct |
19 ms |
40956 KB |
Output is correct |
7 |
Correct |
23 ms |
40960 KB |
Output is correct |
8 |
Correct |
20 ms |
40908 KB |
Output is correct |
9 |
Correct |
20 ms |
41032 KB |
Output is correct |
10 |
Correct |
21 ms |
41008 KB |
Output is correct |
11 |
Correct |
24 ms |
41008 KB |
Output is correct |
12 |
Correct |
24 ms |
40964 KB |
Output is correct |
13 |
Correct |
18 ms |
41036 KB |
Output is correct |
14 |
Correct |
18 ms |
41036 KB |
Output is correct |
15 |
Correct |
18 ms |
41032 KB |
Output is correct |
16 |
Correct |
19 ms |
40960 KB |
Output is correct |
17 |
Correct |
19 ms |
41032 KB |
Output is correct |
18 |
Correct |
19 ms |
40976 KB |
Output is correct |
19 |
Correct |
20 ms |
41040 KB |
Output is correct |
20 |
Correct |
20 ms |
41132 KB |
Output is correct |
21 |
Correct |
20 ms |
40936 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
20 ms |
41036 KB |
Output is correct |
2 |
Correct |
21 ms |
41044 KB |
Output is correct |
3 |
Correct |
19 ms |
41036 KB |
Output is correct |
4 |
Correct |
19 ms |
40948 KB |
Output is correct |
5 |
Correct |
19 ms |
40928 KB |
Output is correct |
6 |
Correct |
19 ms |
40956 KB |
Output is correct |
7 |
Correct |
23 ms |
40960 KB |
Output is correct |
8 |
Correct |
20 ms |
40908 KB |
Output is correct |
9 |
Correct |
20 ms |
41032 KB |
Output is correct |
10 |
Correct |
21 ms |
41008 KB |
Output is correct |
11 |
Correct |
24 ms |
41008 KB |
Output is correct |
12 |
Correct |
24 ms |
40964 KB |
Output is correct |
13 |
Correct |
18 ms |
41036 KB |
Output is correct |
14 |
Correct |
18 ms |
41036 KB |
Output is correct |
15 |
Correct |
18 ms |
41032 KB |
Output is correct |
16 |
Correct |
19 ms |
40960 KB |
Output is correct |
17 |
Correct |
19 ms |
41032 KB |
Output is correct |
18 |
Correct |
19 ms |
40976 KB |
Output is correct |
19 |
Correct |
20 ms |
41040 KB |
Output is correct |
20 |
Correct |
20 ms |
41132 KB |
Output is correct |
21 |
Correct |
20 ms |
40936 KB |
Output is correct |
22 |
Correct |
27 ms |
41344 KB |
Output is correct |
23 |
Correct |
22 ms |
41312 KB |
Output is correct |
24 |
Correct |
26 ms |
41436 KB |
Output is correct |
25 |
Correct |
22 ms |
41420 KB |
Output is correct |
26 |
Correct |
24 ms |
41428 KB |
Output is correct |
27 |
Correct |
24 ms |
41436 KB |
Output is correct |
28 |
Correct |
25 ms |
41420 KB |
Output is correct |
29 |
Correct |
23 ms |
41380 KB |
Output is correct |
30 |
Correct |
24 ms |
41428 KB |
Output is correct |
31 |
Correct |
22 ms |
41540 KB |
Output is correct |
32 |
Correct |
22 ms |
41548 KB |
Output is correct |
33 |
Correct |
22 ms |
41636 KB |
Output is correct |
34 |
Correct |
23 ms |
41420 KB |
Output is correct |
35 |
Correct |
23 ms |
41420 KB |
Output is correct |
36 |
Correct |
24 ms |
41428 KB |
Output is correct |
37 |
Correct |
22 ms |
41348 KB |
Output is correct |
38 |
Correct |
25 ms |
41464 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
20 ms |
41036 KB |
Output is correct |
2 |
Correct |
21 ms |
41044 KB |
Output is correct |
3 |
Correct |
19 ms |
41036 KB |
Output is correct |
4 |
Correct |
19 ms |
40948 KB |
Output is correct |
5 |
Correct |
19 ms |
40928 KB |
Output is correct |
6 |
Correct |
19 ms |
40956 KB |
Output is correct |
7 |
Correct |
23 ms |
40960 KB |
Output is correct |
8 |
Correct |
20 ms |
40908 KB |
Output is correct |
9 |
Correct |
20 ms |
41032 KB |
Output is correct |
10 |
Correct |
21 ms |
41008 KB |
Output is correct |
11 |
Correct |
24 ms |
41008 KB |
Output is correct |
12 |
Correct |
24 ms |
40964 KB |
Output is correct |
13 |
Correct |
18 ms |
41036 KB |
Output is correct |
14 |
Correct |
18 ms |
41036 KB |
Output is correct |
15 |
Correct |
18 ms |
41032 KB |
Output is correct |
16 |
Correct |
19 ms |
40960 KB |
Output is correct |
17 |
Correct |
19 ms |
41032 KB |
Output is correct |
18 |
Correct |
19 ms |
40976 KB |
Output is correct |
19 |
Correct |
20 ms |
41040 KB |
Output is correct |
20 |
Correct |
20 ms |
41132 KB |
Output is correct |
21 |
Correct |
20 ms |
40936 KB |
Output is correct |
22 |
Correct |
27 ms |
41344 KB |
Output is correct |
23 |
Correct |
22 ms |
41312 KB |
Output is correct |
24 |
Correct |
26 ms |
41436 KB |
Output is correct |
25 |
Correct |
22 ms |
41420 KB |
Output is correct |
26 |
Correct |
24 ms |
41428 KB |
Output is correct |
27 |
Correct |
24 ms |
41436 KB |
Output is correct |
28 |
Correct |
25 ms |
41420 KB |
Output is correct |
29 |
Correct |
23 ms |
41380 KB |
Output is correct |
30 |
Correct |
24 ms |
41428 KB |
Output is correct |
31 |
Correct |
22 ms |
41540 KB |
Output is correct |
32 |
Correct |
22 ms |
41548 KB |
Output is correct |
33 |
Correct |
22 ms |
41636 KB |
Output is correct |
34 |
Correct |
23 ms |
41420 KB |
Output is correct |
35 |
Correct |
23 ms |
41420 KB |
Output is correct |
36 |
Correct |
24 ms |
41428 KB |
Output is correct |
37 |
Correct |
22 ms |
41348 KB |
Output is correct |
38 |
Correct |
25 ms |
41464 KB |
Output is correct |
39 |
Correct |
386 ms |
60440 KB |
Output is correct |
40 |
Correct |
375 ms |
60060 KB |
Output is correct |
41 |
Correct |
435 ms |
60464 KB |
Output is correct |
42 |
Correct |
395 ms |
60840 KB |
Output is correct |
43 |
Correct |
412 ms |
60836 KB |
Output is correct |
44 |
Correct |
388 ms |
60784 KB |
Output is correct |
45 |
Correct |
356 ms |
66488 KB |
Output is correct |
46 |
Correct |
332 ms |
71728 KB |
Output is correct |
47 |
Correct |
347 ms |
61448 KB |
Output is correct |
48 |
Correct |
304 ms |
61856 KB |
Output is correct |
49 |
Correct |
330 ms |
61792 KB |
Output is correct |
50 |
Correct |
301 ms |
61996 KB |
Output is correct |
51 |
Correct |
298 ms |
69004 KB |
Output is correct |