만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

막다른 길 탐지기

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

요약
양방향 도로로 이루어진 지도가 주어질 때, 막다른 길을 모두 표시하면서 중복되지 않도록 표지판을 최소 개수로 설치하는 위치를 구합니다.
난이도

보통10점 중 7점

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

문제

시 의회는 도로 표지판의 배치를 개선하기로 했습니다. 특히 막다른 길에 세우는 표지판에 신경을 씁니다. 의회가 도로 지도를 주었으니, 막다른 길을 표시할 표지판을 어디에 세울지 정해 주세요. 표지판은 가능한 한 적게 쓰려고 합니다.

도로 지도는 양방향 도로로 연결된 장소들의 모임입니다. 다음 규칙으로 막다른 길 표지판의 완전한 배치를 얻습니다. 장소 xx와 다른 장소를 잇는 도로 SS를 생각해 봅시다. xx에서 SS로 들어간 뒤 U턴하지 않고서는 xx로 되돌아올 수 없다면, SS의 xx 쪽 입구에 막다른 길 표지판을 세웁니다. U턴은 진행 방향을 바로 뒤집는 180도 회전입니다.

비용을 아끼기 위해 중복된 표지판은 세우지 않습니다. 도로 SS의 xx 쪽 입구와 도로 TT의 yy 쪽 입구에 표지판이 있다고 합시다. xx에서 SS로 들어간 뒤 U턴하지 않고 yy에 가서 TT에 들어갈 수 있다면, TT의 yy 쪽 입구 표지판은 중복입니다.

그림 E.1: (a)와 (b) 지도에서 중복되지 않은 막다른 길 표지판이 놓이는 입구를 표시했습니다.

입력

첫 줄에 두 정수 nn, mm이 주어집니다. 1≤n≤5×1051 \le n \le 5 \times 10^5은 장소의 수이고, 0≤m≤5×1050 \le m \le 5 \times 10^5은 도로의 수입니다. 이어서 mm줄에 걸쳐 두 정수 vv, ww(1≤v<w≤n1 \le v < w \le n)가 주어지며, 장소 vv와 ww를 잇는 양방향 도로가 있다는 뜻입니다. 입력에 주어지는 장소 쌍은 모두 서로 다릅니다.

출력

첫 줄에 설치한 막다른 길 표지판의 개수 kk를 출력합니다. 이어서 kk줄에 걸쳐 두 정수 vv, ww를 출력합니다. 이는 장소 vv와 ww를 잇는 도로의 vv 쪽 입구에 표지판을 세운다는 뜻입니다. 줄은 vv의 오름차순으로 정렬하고, vv가 같으면 ww의 오름차순으로 정렬합니다.

예제2

  1. 예제 1

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

    입력
    8 8
    1 2
    1 3
    2 3
    3 4
    1 5
    1 6
    6 7
    6 8
    
    예상 출력
    3
    1 5
    1 6
    3 4