단순 연결 평면 그래프에서 정점 하나를 지웠을 때 그래프가 숲이 되는 정점을 모두 찾아 번호의 합을 구한다.
어려움8그래프DFS구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB철민이는 고양이 한 마리를 키운다. 고양이를 위해 입체 놀이터를 만들었는데, 이 놀이터에는 방 N개와 복도 M개가 있다. 방에는 1번부터 N번까지 번호가 붙어 있다. 복도 하나는 서로 다른 두 방을 잇고, 양쪽 방향으로 지나갈 수 있다. 같은 방 쌍을 잇는 복도는 많아야 하나다. 어떤 두 방 사이에도 복도를 따라가는 이동 경로가 있다. 놀이터는 입체로 되어 있어서 복도끼리 교차하지 않는다. 아래 그림은 방이 4개, 복도가 5개인 놀이터다.

고양이는 성격이 매우 산만해서 쉬지 않고 놀이터를 뛰어다닌다. 특히 서로 다른 방 k개 (k≥3)를 골라 순서를 (a1,a2,…,ak)로 정한 다음, 그 순서대로 반복해서 도는 버릇이 있다. 즉 a1,a2,…,ak,a1,a2,…,ak,a1,… 순서로 움직인다. 이렇게 돌려면 a1과 a2, a2와 a3, ..., ak와 a1이 각각 복도로 이어져 있어야 한다.
철민이는 고양이가 너무 힘들까 봐 반복해서 도는 방법이 하나도 남지 않게 만들려고 한다. 손을 덜 들이려고 방을 딱 하나만 없애서, 그리고 그 방에 이어진 복도를 함께 막아서 목표를 이루려 한다.
위 그림의 놀이터라면 방 1, 2, 3을 순서대로 반복해서 돌 수 있고, 방 1, 2, 4, 3을 순서대로 반복해서 돌 수도 있다. 여기서 2번 방을 없애면 반복해서 도는 방법이 사라진다. 3번 방을 없애도 결과는 같다. 하지만 4번 방을 없애면 반복해서 도는 방법이 여전히 남는다.
방과 복도의 연결 상태가 주어진다. 방 하나만 없애서 고양이가 반복해서 도는 방법을 모두 없앨 수 있다면 그 방의 번호를 구한다. 그런 방이 여러 개라면 번호를 모두 더한 값을 구하고, 그런 방이 없으면 0을 구한다.
첫째 줄에 방의 수 N과 복도의 수 M이 공백으로 구분되어 주어진다. (2≤N≤300000, 1≤M≤300000)
다음 M개 줄에는 복도 하나가 잇는 서로 다른 두 방의 번호가 주어진다. 같은 방 쌍이 두 번 이상 주어지지 않는다. 주어진 놀이터에는 고양이가 반복해서 도는 방법이 적어도 하나 있다.
방 하나만 없애서 고양이가 반복해서 도는 방법을 모두 없앨 수 있다면 그 방의 번호를 출력한다. 그런 방이 여러 개라면 번호를 모두 더한 값을 출력한다. 그런 방이 없으면 0을 출력한다.
첫 번째 예제에서는 2번 방을 없애도 되고 3번 방을 없애도 된다. 그래서 두 번호를 더한 5를 출력한다.