만드는 중입니다

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

아이의 악몽

시간 제한3초메모리 제한1024 MB

요약
연결된 그래프에서 길이 4 이상인 사이클마다 대각선이 있을 때, 남은 그래프에 사이클이 없도록 정점을 최대한 많이 남기는 문제입니다.
난이도

보통10점 중 7점

유형
그래프, 그리디, 구현
정답자
아직 제출이 없습니다

문제

바샤는 트리를 좋아하고 그래프의 사이클은 아주 싫어한다. 대회에서 사이클 문제를 만날 때마다 그는 화가 나서, 커뮤니티에서 유명한 포럼에 토론글을 올린다.

오늘은 훈련 캠프에서 중요한 대회를 앞둔 전날 밤이다. 바샤는 악몽을 꾼다. 꿈에서 그는 사이클이 가득한 연결된 무방향 그래프를 본다. 사이클 안에 사이클이 있고, 그 안에 또 사이클이 있는 식이다. 이 그래프는 정점이 4개 이상인 모든 단순 사이클에 대해, 그 사이클의 서로 인접하지 않은 두 정점을 잇는 간선이 반드시 존재할 만큼 끔찍하다.

바샤가 할 수 있는 일은 정점 하나를 삭제하는 것뿐이다. 이때 그 정점에 연결된 간선도 모두 함께 사라진다. 남은 그래프에 사이클이 전혀 없도록 정점을 일부 삭제하되, 남는 정점의 수는 최대가 되어야 한다. 정점을 삭제하면 그래프가 여러 조각으로 나뉠 수 있다.

입력

첫 줄에 그래프의 정점 개수 nn과 간선 개수 mm이 주어진다 (1≤n,m≤200 0001 \le n, m \le 200\,000). 이어지는 mm개의 줄에는 간선으로 연결된 두 정점의 번호 uu와 vv가 각각 주어진다 (1≤u,v≤n1 \le u, v \le n). 그래프는 연결되어 있고, 자기 루프와 중복 간선이 없으며, 정점이 4개 이상인 모든 단순 사이클에 대해 그 사이클의 서로 인접하지 않은 두 정점을 잇는 간선이 존재한다고 보장된다.

출력

첫 줄에 남길 수 있는 정점의 최대 개수 tt를 출력한다. 둘째 줄에는 남는 정점의 번호 tt개를 출력한다. 답이 여러 개이면 어떤 답을 출력해도 된다.

힌트

아래 그림은 예제 3의 그래프이다. 실선으로 된 정점과 간선은 결과 그래프에 남는 것이고, 점선으로 된 정점과 간선은 삭제되는 것이다.

예제3

  1. 예제 1

    입력
    3 2
    1 2
    2 3
    
    예상 출력
    3
    1 2 3
    
  2. 예제 2

    입력
    3 3
    1 2
    2 3
    3 1
    
    예상 출력
    2
    1 2
    
  3. 예제 3

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