만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

서울과학고 쪼개기

시간 제한2초메모리 제한1024 MB

요약
각 정점 i마다 그 정점에 새 잎을 붙인 뒤 트리를 모두 지우는 데 필요한 최소 폭파 횟수를 구합니다. 폭파한 정점과 그 인접 정점은 모두 제거됩니다.
난이도

보통10점 중 7점

유형
트리, 동적 계획법, DFS
정답자
아직 제출이 없습니다

문제

서울의 명소 서울과학고등학교는 11부터 NN까지 번호가 매겨진 정점이 N−1N - 1개의 간선으로 연결된 트리다. 학교의 어떤 두 정점 사이도 간선을 따라 오갈 수 있다.

상훈이는 리프라서 서울과학고에 새로운 리프 노드를 추가하려고 한다. 이를 위해 학교의 임의의 정점을 골라 새 정점을 간선으로 연결한다.

성현이는 서울과학고의 정점을 "터트린다". 규칙은 다음과 같다.

  • 성현이는 한 번에 한 정점만 터트릴 수 있다.
  • 정점 하나를 터트리면, 그 정점으로부터의 거리가 1 이하인 정점들과 그 정점들에 연결된 간선들이 모두 삭제된다. 두 정점 사이의 거리는 한 정점에서 다른 정점으로 이동할 때 거쳐야 하는 최소 간선 개수다. 터트린 뒤에는 학교가 여러 개의 트리로 나뉠 수 있다.
  • 한 번 터지거나 제거된 정점은 다시 터트릴 수 없다.
  • 성현이는 학교 전체가 사라질 때까지 이 과정을 반복한다.

상훈이가 새 정점을 어디에 연결했는지 알 수 없으므로, 성현이는 가능한 모든 경우에 대비하려고 한다. 정점을 터트리는 일은 매우 힘들기 때문에, 성현이는 최소 횟수로 작업을 끝내려고 한다. 상훈이가 정점 11, 정점 22, ⋯\cdots, 정점 NN에 새 정점을 연결했을 때 성현이가 터트려야 하는 정점 수의 최솟값을 구하라. 각 연결 상황은 서로 독립이다.

입력

첫 번째 줄에 NN이 주어진다.

두 번째 줄부터 N−1N-1개의 줄 중 ii번째 줄에는 ii번째 간선의 양 끝점 uiu_i, viv_i가 공백으로 구분되어 주어진다. 이는 uiu_i번 정점과 viv_i번 정점을 잇는 간선이 있다는 뜻이다. (1≤i≤N−11 \leq i \leq N-1)

출력

NN개의 줄을 출력한다. ii번째 줄에는 상훈이가 ii번 정점에 새 정점을 연결했을 때 성현이가 터트려야 하는 정점 수의 최솟값을 출력한다.

제한

  • 1≤N≤300 0001 \leq N \leq 300\,000
  • 1≤ui,vi≤N1 \leq u_i, v_i \leq N (단, 1≤i≤N−11 \leq i \leq N-1)

예제2

  1. 예제 1

    입력
    3
    1 2
    2 3
    
    예상 출력
    2
    1
    2
    
  2. 예제 2

    입력
    12
    11 6
    6 8
    8 1
    1 7
    7 12
    12 3
    3 10
    10 9
    9 4
    4 5
    5 2
    
    예상 출력
    5
    5
    5
    5
    4
    4
    4
    5
    5
    4
    5
    5