수도
시간 제한2.5초메모리 제한512 MB
마을 N개가 트리 모양으로 연결되어 있고 각 마을은 하나의 도시에 속합니다. 어느 도시든 마을들이 서로 연결된 상태가 되도록 하는 최소 병합 횟수를 구합니다.
문제
JOI 왕국에는 1번부터 N번까지 번호가 붙은 N개의 마을이 있다. 마을들은 개의 도로로 이어져 있다. i번째 도로()는 마을 와 마을 를 잇는다. 모든 도로는 양방향으로 지날 수 있다. 어느 마을에서든 도로를 거쳐 다른 모든 마을로 이동할 수 있다.
현재 JOI 왕국은 1번부터 K번까지 번호가 붙은 K개의 도시로 나뉘어 있다. 마을 j()는 도시 에 속한다. 모든 도시에는 마을이 하나 이상 있다.
K 대통령은 왕국의 왕이다. 그는 수도로 삼을 도시 하나를 고른다. 안전상의 이유로 수도는 다음 조건을 만족해야 한다.
수도에 속한 어느 마을에서든, 수도에 속한 마을만 거쳐서 수도의 다른 모든 마을로 이동할 수 있어야 한다.
그런데 이 조건을 만족하는 도시가 하나도 없을 수 있고, 그 경우 K 대통령은 수도를 고를 수 없다는 사실을 알아챘다.
이 문제를 해결하려고 K 대통령은 도시를 합친다. 정확히 말하면 다음 연산을 할 수 있다.
, , 를 만족하는 x와 y를 고른다. 그러면 도시 y에 속한 모든 마을이 도시 x에 속하게 된다.
도시를 합치는 데는 비용이 많이 드므로, K 대통령은 수도를 고를 수 있을 때까지 필요한 합치기 횟수를 최소로 하고자 한다.
마을과 도로의 구조, 그리고 각 마을이 현재 속한 도시가 주어질 때, 도시 합치기의 최소 횟수를 구하는 프로그램을 작성하라.
입력
표준 입력에서 다음 데이터를 읽는다. 입력의 모든 값은 정수이다.
N K
A1 B1
.
.
.
AN-1 BN-1
C1
.
.
.
CN
출력
표준 출력에 한 줄을 출력한다. 수도를 고르는 데 필요한 도시 합치기의 최소 횟수를 출력한다.
제한
- .
- .
- ().
- ().
- 어느 마을에서든 도로를 거쳐 다른 모든 마을로 이동할 수 있다.
- ().
- 모든 ()에 대해 인 정수 ()가 존재한다.