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

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

K번째 서브트리

시간 제한1초메모리 제한512 MB

요약
노드가 최대 5000개인 트리와 순위 K가 주어질 때, 노드 수가 K번째로 작은 연결 부분그래프의 크기를 구하고, 그러한 부분그래프가 K개 미만이면 -1을 출력한다.
난이도

어려움10점 중 8점

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

문제

루트가 없는 레이블이 붙은 트리가 주어진다. 서브트리는 이 트리의 연결된 부분그래프이다. 서브트리의 크기는 서브트리에 속한 노드의 개수이다. 두 서브트리는 한쪽에만 속하는 노드가 하나라도 있으면 서로 다르다. 가장 큰 서브트리는 원래 트리 자기 자신이다.

비어 있지 않은 서브트리 중 KK번째로 작은 것의 크기를 구하시오.

입력

첫째 줄에 두 정수 nn (1≤n≤5,0001 \le n \le 5,000)과 KK (1≤K≤10181 \le K \le 10^{18})가 주어진다. nn은 트리의 노드 개수이고, KK번째로 작은 서브트리의 크기를 구해야 한다. 노드에는 11부터 nn까지 번호가 붙어 있다.

다음 n−1n - 1개의 줄에는 정수 uu와 vv (1≤u,v≤n1 \le u, v \le n, u≠vu \ne v)의 쌍이 주어지며, 이는 노드 uu와 vv를 잇는 무향 간선을 나타낸다. 모든 간선은 서로 다르다. 간선들이 하나의 트리를 이룬다는 것이 보장된다.

출력

입력으로 주어진 트리의 비어 있지 않은 서브트리 중 KK번째로 작은 것의 노드 개수를 한 정수로 출력한다. 주어진 트리에 비어 있지 않은 서브트리가 KK개보다 적으면 −1-1을 출력한다.

예제3

  1. 예제 1

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

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

    입력
    5 10
    1 2
    2 3
    3 4
    4 5
    
    예상 출력
    3