ArboreX

Time limit: 0.7s Memory limit: 512MB Input: Output:

Liceul X, cel mai bun liceu de informatică din România, începe să facă experimente pentru a optimiza experiența educațională. Desigur, fiind un liceu specializat în informatică, cele NN săli de clasă din liceu sunt dispuse sub forma unui arbore, ele fiind legate prin N1N - 1 coridoare bidirecționale astfel încât să se poată ajunge de la oricare sală la oricare alta. Renumiții profesori ai liceului au realizat că eficiența în educație depinde atât de numărul de săli de clasă, cât și de numărul maxim de coridoare ce se leagă de câte o clasă. Mai exact, profesorii sunt interesați de următoarea informație: pentru fiecare KK de la 11 la NN, care este mărimea celei mai mari submulțimi de clase conexe pe care le-am putea selecta, astfel încat nicio clasă din submulțime să nu fie legată direct de mai mult de KK alte clase din submulțime.

Mai formal, se dă un arbore AA cu NN noduri. Definim un subarbore al lui AA ca fiind o submulțime conexă de noduri SS. Pentru un subarbore oarecare SS al lui AA, definim gradul unui nod xx din SS față de SS ca fiind numărul de noduri din SS de care este xx legat direct prin muchii. Definim gradul subarborelui SS ca fiind maximul gradelor nodurilor din SS (față de SS). Se cere să calculați, pentru K=1,2,...,NK = 1, 2, ..., N, mărimea maximă a unui subarbore al lui AA de grad cel mult KK.

Protocol de interacțiune

Concurentul va implementa funcția solve, cu următoarea semnătură:

std::vector<int> solve (int N, std::vector<int> a, std::vector<int> b);

Parametrii acestei funcții au următoarea semnificație:

  • NN numarul de noduri ale arborelui AA;
  • Vectorii aa și bb conțin vârfurile muchiilor arborelui AA. Mai exact, există o muchie bidirecțională între nodurile a[i]a[i] și b[i]b[i], oricare ar fi 0i<N0 \le i \lt N.

Funcția va întoarce un vector STL ce conține cele NN numere cerute în rezultat, în ordine. Elementul care corespunde poziției ii din rezultat va fi răspunsul pentru K=i+1K = i + 1. Concurentul NU va implementa o funcție main.

Subtask 1 (13 puncte)

  • 1N2 0001 \le N \le 2\ 000

Subtask 2 (15 puncte)

  • Cel mult 2 0002\ 000 de noduri sunt vecine cu mai mult de 22 noduri.
  • 1N100 0001 \le N \le 100\ 000

Subtask 3 (38 puncte)

  • 1N70 0001 \le N \le 70\ 000

Subtask 4 (34 puncte)

  • 1N200 0001 \le N \le 200\ 000

Exemple

Input

5
3 1
3 5
3 4
1 2

Output

2
4
5
5
5

Input

7
4 2
4 5
7 4
4 1
4 3
7 6

Output

2
4
5
6
7
7
7

Input

10
9 4
9 2
9 8
9 1
3 9
10 7
9 5
6 3
6 10

Output

2
6
7
8
9
10
10
10
10
10

Input

12
1 8
1 11
11 9
12 6
1 5
1 12
5 2
11 4
1 3
5 7
5 10

Output

2
5
9
11
12
12
12
12
12
12
12
12

Input

20
8 13
16 12
20 4
20 8
16 2
5 9
16 5
16 17
8 3
16 7
5 10
5 14
16 11
16 6
8 19
20 16
5 18
5 1
20 15

Output

2
6
10
14
16
18
19
20
20
20
20
20
20
20
20
20
20
20
20
20

Explicații

Pentru primul exemplu:

Pentru al doilea exemplu:

Pentru al treilea exemplu:

Pentru al patrulea exemplu:

Pentru ultimul exemplu:

Log in or sign up to be able to send submissions!