회사
시간 제한1초메모리 제한128 MB
사이클이 없는 조직도에서 모든 도달 관계를 그대로 유지하는 최소한의 직속 상사 관계를 골라 정렬해 출력한다.
문제
플럼소프트(Plumsoft) 회사에는 직원들 사이에 위계가 있어, 어떤 직원은 다른 직원의 상사이다. 직원 로 이루어진 사슬이 존재하여 이 의 상사, 가 의 상사, , 이 의 상사이면, 사람 는 사람 를 관리한다고 한다. 플럼소프트는 매우 건전하게 운영되는 회사이므로, 서로가 서로를 관리하는 두 직원은 존재하지 않는다고 가정할 수 있다(위계에 순환이 없다).
경영진은 회의 비용을 줄이고자, 기존의 직접적인 " 는 의 상사" 관계 중 일부만 남기려 한다. 단, 모든 " 는 를 관리한다" 관계는 그대로 유지되어야 한다. 누가 누구를 관리하는지 전혀 바뀌지 않도록 하면서, 남기는 직접적인 "상사" 관계의 수를 최소로 하도록 도와라.
입력
첫째 줄에 두 정수 과 이 공백으로 구분되어 주어진다 (, ). 은 직원의 수, 은 회사의 직접적인 "상사" 관계의 수이다. 직원은 번부터 번까지 번호가 매겨져 있다. 이어지는 개의 줄 각각에는 두 번호 와 가 공백으로 구분되어 주어지며, 이는 가 의 상사임을 뜻한다.
출력
첫째 줄에, 모든 "관리한다" 관계가 유지되도록 남겨야 하는 직접적인 "상사" 관계의 최소 개수 을 출력한다. 그다음 개의 줄에, 남긴 관계들을 한 줄에 하나씩 두 번호 와 (여전히 가 의 상사임)를 공백으로 구분하여 출력한다. 관계는 오름차순으로, 먼저 를 기준으로, 가 같으면 를 기준으로 정렬하여 출력한다.