만드는 중입니다

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

산만한 고양이

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

요약
단순 연결 평면 그래프에서 정점 하나를 지웠을 때 그래프가 숲이 되는 정점을 모두 찾아 번호의 합을 구한다.
난이도

어려움10점 중 8점

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

문제

철민이는 고양이 한 마리를 키운다. 고양이를 위해 입체 놀이터를 만들었는데, 이 놀이터에는 방 NN개와 복도 MM개가 있다. 방에는 1번부터 NN번까지 번호가 붙어 있다. 복도 하나는 서로 다른 두 방을 잇고, 양쪽 방향으로 지나갈 수 있다. 같은 방 쌍을 잇는 복도는 많아야 하나다. 어떤 두 방 사이에도 복도를 따라가는 이동 경로가 있다. 놀이터는 입체로 되어 있어서 복도끼리 교차하지 않는다. 아래 그림은 방이 4개, 복도가 5개인 놀이터다.

방 4개와 복도 5개로 이루어진 놀이터

고양이는 성격이 매우 산만해서 쉬지 않고 놀이터를 뛰어다닌다. 특히 서로 다른 방 kk개 (k≥3)(k \ge 3)를 골라 순서를 (a1,a2,…,ak)(a_1, a_2, \ldots, a_k)로 정한 다음, 그 순서대로 반복해서 도는 버릇이 있다. 즉 a1,a2,…,ak,a1,a2,…,ak,a1,…a_1, a_2, \ldots, a_k, a_1, a_2, \ldots, a_k, a_1, \ldots 순서로 움직인다. 이렇게 돌려면 a1a_1과 a2a_2, a2a_2와 a3a_3, ..., aka_k와 a1a_1이 각각 복도로 이어져 있어야 한다.

철민이는 고양이가 너무 힘들까 봐 반복해서 도는 방법이 하나도 남지 않게 만들려고 한다. 손을 덜 들이려고 방을 딱 하나만 없애서, 그리고 그 방에 이어진 복도를 함께 막아서 목표를 이루려 한다.

위 그림의 놀이터라면 방 1, 2, 3을 순서대로 반복해서 돌 수 있고, 방 1, 2, 4, 3을 순서대로 반복해서 돌 수도 있다. 여기서 2번 방을 없애면 반복해서 도는 방법이 사라진다. 3번 방을 없애도 결과는 같다. 하지만 4번 방을 없애면 반복해서 도는 방법이 여전히 남는다.

방과 복도의 연결 상태가 주어진다. 방 하나만 없애서 고양이가 반복해서 도는 방법을 모두 없앨 수 있다면 그 방의 번호를 구한다. 그런 방이 여러 개라면 번호를 모두 더한 값을 구하고, 그런 방이 없으면 0을 구한다.

입력

첫째 줄에 방의 수 NN과 복도의 수 MM이 공백으로 구분되어 주어진다. (2≤N≤300 000(2 \le N \le 300\,000, 1≤M≤300 000)1 \le M \le 300\,000)

다음 MM개 줄에는 복도 하나가 잇는 서로 다른 두 방의 번호가 주어진다. 같은 방 쌍이 두 번 이상 주어지지 않는다. 주어진 놀이터에는 고양이가 반복해서 도는 방법이 적어도 하나 있다.

출력

방 하나만 없애서 고양이가 반복해서 도는 방법을 모두 없앨 수 있다면 그 방의 번호를 출력한다. 그런 방이 여러 개라면 번호를 모두 더한 값을 출력한다. 그런 방이 없으면 0을 출력한다.

힌트

첫 번째 예제에서는 2번 방을 없애도 되고 3번 방을 없애도 된다. 그래서 두 번호를 더한 5를 출력한다.

예제3

  1. 예제 1

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

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

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