경로 덮기
시간 제한1초메모리 제한256 MB
트리와 m개의 단순 경로가 주어질 때, 모든 경로와 만나는 최소 크기 정점 집합을 찾아 크기와 원소를 출력한다.
문제
정수 으로 번호가 붙은 개의 정점으로 이루어진 무방향 무가중치 트리가 주어진다. 이 트리에서 개의 단순 경로가 선택된다. 각 경로는 양 끝점의 쌍 로 주어진다.
를 트리의 모든 정점의 집합이라 하자. 의 부분집합 가 좋은 집합이라는 것은, 인 모든 에 대해 에서 로 가는 단순 경로가 의 정점을 적어도 하나 포함한다는 뜻이다. 의 부분집합 가 최선 집합이라는 것은 가 좋은 집합이고, 인 좋은 집합 가 존재하지 않는다는 뜻이다.
의 최선 집합을 구해야 한다.
입력
첫째 줄에는 트리의 정점 수 이 주어진다 ().
다음 개의 줄에는 트리의 간선이 하나씩 주어진다. 번째 간선은 그 간선이 잇는 두 정점의 번호 와 로 주어진다 (, ). 주어진 간선들이 트리를 이룬다는 것은 보장된다.
그다음 줄에는 경로의 수 이 주어진다 ().
다음 개의 줄에는 트리 위의 경로가 하나씩 주어진다. 번째 경로는 양 끝점의 번호 와 로 주어진다 (). 어떤 경로는 일 수 있다. 모든 경로가 서로 다르다는 것은 보장되지 않는다.
출력
첫째 줄에는 의 최선 집합의 크기를 출력한다. 둘째 줄에는 의 최선 집합에 속하는 정점의 번호를 아무 순서로 출력한다.
가능한 답이 여러 개라면 그중 아무 것이나 출력한다.