바이킹 마을
시간 제한2초메모리 제한1024 MB
방향 그래프가 주어졌을 때 모든 정점의 도달 가능한 집합이 같은 루트 트리가 있는지 판단하고, 있으면 각 정점의 부모를 출력합니다.
문제
익킹은 마을의 지시 체계가 매우 복잡하다는 것을 알아챘다. 마을에는 명의 바이킹이 살고 있고, 1부터 까지 번호가 붙어 있다. 익킹은 개의 쌍 , 를 적었다. 이는 번 바이킹이 번 바이킹에게 임무를 맡길 수 있다는 뜻이다. 임무를 받은 바이킹은 자신이 임무를 맡길 수 있는 바이킹에게 그 임무를 다시 넘길 수 있다.
바이킹 의 임무가 바이킹 까지 도달하면, 는 의 부하라고 한다.
익킹은 이 체계가 너무 복잡하고 비효율적이라고 본다. 그래서 새 체계를 도입하려 한다. 새 체계에는 리더가 정확히 한 명 있고, 누구도 그 리더에게 임무를 맡길 수 없다. 리더를 제외한 모든 바이킹은 정확히 한 명의 다른 바이킹으로부터 임무를 받는다. 리더의 임무는 마을의 모든 바이킹에게 도달해야 한다. 즉, 새 체계는 뿌리에서 간선이 바깥으로 뻗는 루트 트리가 된다. 익킹은 모든 에 대해, 바이킹 의 부하 집합이 새 체계와 옛 체계에서 같기를 원한다.
익킹은 아직 그런 체계를 찾지 못했다. 그런 체계가 존재하는지 판단하고, 존재한다면 아무거나 하나를 찾아 달라.
입력
첫째 줄에 바이킹의 수 과 옛 체계에서 임무를 맡길 수 있는 쌍의 수 이 주어진다 ().
다음 개의 줄에는 정수 쌍 , 가 주어진다. 옛 체계에서 번 바이킹이 번 바이킹에게 임무를 맡길 수 있다는 뜻이다 (, ). 같은 쌍이 여러 번 나올 수 있다.
출력
조건을 만족하는 체계가 없으면 No를 출력한다.
있으면 첫째 줄에 Yes를 출력하고, 둘째 줄에 정수 을 개 출력한다. 번 바이킹이 새 체계의 리더라면 이다. 그렇지 않으면 는 새 체계에서 번 바이킹에게 임무를 맡기는 바이킹의 번호이다 (, ).