이등거리
시간 제한2초메모리 제한512 MB
트리와 표시된 정점들이 주어질 때, 모든 표시된 정점까지의 거리가 같은 정점을 찾거나 그러한 정점이 없음을 판별한다.
문제
2019년에 ICPC 지역 예선 구조가 조금 바뀌었다. 이제 각 지역마다 지역 예선 결승을 열기에 가장 좋은 장소를 골라야 한다. 공정하게 하려면 모든 팀이 그곳까지 가는 데 같은 시간이 걸리도록 도시를 정해야 한다.
편의상 모든 팀이 결승에 가는 데 기차를 이용한다고 하자. 철도망은 도시를 정점으로 하는 트리로 나타낼 수 있고, 두 도시가 철도로 직접 연결되어 있으면 한 도시에서 다른 도시로 가는 데 정확히 1시간이 걸린다.
철도망의 구조와 팀이 있는 도시들이 주어진다. 모든 팀의 도시까지 거리가 같은 도시를 하나 고르거나, 그러한 도시가 없으면 없다고 판별해야 한다.
입력
첫째 줄에는 도시의 수 n과 팀의 수 m이 주어진다 (1 ≤ m ≤ n ≤ 2 · 105). 다음 n − 1개 줄 각각에는 i번째 철도로 연결된 두 도시 vi와 ui가 주어진다 (1 ≤ vi, ui ≤ n). 모든 도시 쌍을 잇는 단순 경로는 정확히 하나이다.
그다음 줄에는 m개의 정수 c1, c2, . . . , cm이 주어진다. 이는 팀이 있는 도시이다 (1 ≤ ci ≤ n). 모든 팀은 서로 다른 도시에 있다.
출력
공정하게 도시를 고르는 것이 불가능하면 “NO”라는 단어 하나를 출력한다. 그렇지 않으면 첫째 줄에 “YES”를 출력한다. 둘째 줄에는 지역 예선 결승을 열 도시 하나를 정수로 출력한다. 답이 여러 개면 그중 아무거나 출력해도 된다.