산만한 고양이

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

어려움8그래프DFS구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

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

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

고양이는 성격이 매우 산만해서 쉬지 않고 놀이터를 뛰어다닌다. 특히 서로 다른 방 kk(k3)(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_1a2a_2, a2a_2a3a_3, ..., aka_ka1a_1이 각각 복도로 이어져 있어야 한다.

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

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

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

입력

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

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

출력

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

힌트

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