이등거리

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

요약
트리와 표시된 정점들이 주어질 때, 모든 표시된 정점까지의 거리가 같은 정점을 찾거나 그러한 정점이 없음을 판별한다.
난이도

보통10점 중 7점

유형
트리, DFS, 그래프, 구현
정답자
아직 제출이 없습니다

문제

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”를 출력한다. 둘째 줄에는 지역 예선 결승을 열 도시 하나를 정수로 출력한다. 답이 여러 개면 그중 아무거나 출력해도 된다.

예제2

  1. 예제 1

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

    입력
    2 2
    1 2
    1 2
    
    예상 출력
    NO