아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

트리 제거

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

요약
트리가 주어질 때, 임의의 경로 위 정점과 그에 붙은 간선을 지우는 연산을 반복해 모든 간선을 없애는 최소 연산 횟수를 구한다.
난이도

어려움10점 중 8점

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

문제

정점 nn개로 이루어진 무가중 트리가 주어지며, 정점은 11부터 nn까지의 정수로 번호가 매겨져 있다. remove 연산을 다음과 같이 정의한다.

  1. 현재 그래프에서 임의의 경로를 하나 고른다. 정점 하나만으로 이루어진 경로도 유효하다.
  2. 이 경로 위의 모든 정점과 그 정점들에 연결된 모든 간선을 제거한다.

모든 간선을 제거하는 데 필요한 연산 횟수의 최솟값을 구하여라. 일부 정점이 제거되지 않고 남아 있어도 된다.

입력

첫째 줄에 트리의 정점 수 nn이 주어진다. (2≤n≤2⋅1052 \le n \le 2 \cdot 10^5)

다음 n−1n - 1개 줄의 ii번째 줄에는 ii번째 간선이 연결하는 두 정점의 번호 a_ia\_i와 b_ib\_i가 주어진다. (1≤a_i,b_i≤n1 \le a\_i, b\_i \le n, a_i≠b_ia\_i \ne b\_i)

주어지는 그래프는 트리임이 보장된다.

출력

remove 연산 횟수의 최솟값을 정수 하나로 출력한다.

힌트

세 번째 예제는 다음 그림에 대응한다.

예제3

  1. 예제 1

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

    입력
    6
    3 4
    2 3
    5 3
    1 3
    3 6
    
    예상 출력
    1
    
  3. 예제 3

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