막다른 길 탐지기
시간 제한5초메모리 제한512 MB
양방향 도로로 이루어진 지도가 주어질 때, 막다른 길을 모두 표시하면서 중복되지 않도록 표지판을 최소 개수로 설치하는 위치를 구합니다.
문제
시 의회는 도로 표지판의 배치를 개선하기로 했습니다. 특히 막다른 길에 세우는 표지판에 신경을 씁니다. 의회가 도로 지도를 주었으니, 막다른 길을 표시할 표지판을 어디에 세울지 정해 주세요. 표지판은 가능한 한 적게 쓰려고 합니다.
도로 지도는 양방향 도로로 연결된 장소들의 모임입니다. 다음 규칙으로 막다른 길 표지판의 완전한 배치를 얻습니다. 장소 와 다른 장소를 잇는 도로 를 생각해 봅시다. 에서 로 들어간 뒤 U턴하지 않고서는 로 되돌아올 수 없다면, 의 쪽 입구에 막다른 길 표지판을 세웁니다. U턴은 진행 방향을 바로 뒤집는 180도 회전입니다.
비용을 아끼기 위해 중복된 표지판은 세우지 않습니다. 도로 의 쪽 입구와 도로 의 쪽 입구에 표지판이 있다고 합시다. 에서 로 들어간 뒤 U턴하지 않고 에 가서 에 들어갈 수 있다면, 의 쪽 입구 표지판은 중복입니다.

그림 E.1: (a)와 (b) 지도에서 중복되지 않은 막다른 길 표지판이 놓이는 입구를 표시했습니다.
입력
첫 줄에 두 정수 , 이 주어집니다. 은 장소의 수이고, 은 도로의 수입니다. 이어서 줄에 걸쳐 두 정수 , ()가 주어지며, 장소 와 를 잇는 양방향 도로가 있다는 뜻입니다. 입력에 주어지는 장소 쌍은 모두 서로 다릅니다.
출력
첫 줄에 설치한 막다른 길 표지판의 개수 를 출력합니다. 이어서 줄에 걸쳐 두 정수 , 를 출력합니다. 이는 장소 와 를 잇는 도로의 쪽 입구에 표지판을 세운다는 뜻입니다. 줄은 의 오름차순으로 정렬하고, 가 같으면 의 오름차순으로 정렬합니다.