여행하는 애벌레
면접 대비시간 제한1초메모리 제한1024 MB
루트 0에서 출발해 가중치가 있는 트리의 표시된 노드를 모두 방문하고 돌아오는 최단 경로의 길이를 구합니다.
문제
릴리스는 배고픈 애벌레이다. 나무의 뿌리에서 주변을 둘러보니 뿌리로 돌아가기 전에 먹고 싶은 나뭇잎이 몇 개 보인다. 릴리스는 가능한 한 빨리 이 나뭇잎을 모두 먹고, 통통하고 버터처럼 부드러운 나비로 자라고 싶어 한다.
릴리스가 사는 나무는 조금 특이하다. 나무는 노드들의 모음으로 볼 수 있고, 그중 일부 노드에는 릴리스가 먹고 싶은 나뭇잎이 있다. 각 가지는 정확히 두 노드를 잇는다. 어떤 두 노드 사이든 이동하는 길은 정확히 하나만 있다고 보장된다.

그림 1: 나무 안에서 릴리스가 움직이는 경로이다.
입력
첫 줄에는 나무의 노드 개수 ()과 릴리스가 먹고 싶은 나뭇잎의 개수 ()가 주어진다.
다음 개의 줄은 가지를 설명한다. 번째 줄에는 정수 , (, )와 ()가 주어진다. 이는 노드 와 사이에 가지가 있고, 그 가지를 건너는 데 의 시간이 걸린다는 뜻이다. 노드 을 뿌리로 하여 나무를 보면 는 의 부모이다. 즉 는 에서 로 가는 유일한 경로 위에 있다. 릴리스는 항상 뿌리 노드 에서 출발한다.
마지막 줄에는 서로 다른 정수 ()가 주어진다. 이는 릴리스가 먹고 싶은 나뭇잎이 있는 노드들이다.
출력
뿌리에서 출발해 가지를 따라 이동하고 다시 뿌리로 돌아오며, 릴리스가 모든 나뭇잎을 먹을 수 있는 가장 짧은 경로의 길이를 출력한다.