선인장 그래프 간선 지우기

선인장 그래프에서 남은 간선을 하나씩 균등 무작위로 지우다가 그래프가 연결되지 않게 될 때까지 걸리는 간선 삭제 횟수의 기댓값을 소수점 여섯 자리까지 구한다.

보통7확률그래프DFS수학아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

선인장 그래프는 서로 다른 두 단순 사이클이 정점을 많아야 한 개 공유하는 연결 무향 그래프이다. 단순 사이클은 같은 정점을 두 번 지나지 않는 사이클을 뜻한다. 선인장 그래프에서는 그런 사이클 두 개가 정점 두 개 이상에서 겹치지 않는다.

주어진 선인장 그래프에서 게임을 한다. 한 단계마다 남아 있는 간선 중 하나를 골라 지운다. 지울 간선은 남아 있는 간선 전체에서 균등한 확률로 고르고, 각 단계의 선택은 서로 독립이다. 그래프가 더 이상 연결되어 있지 않으면, 즉 사이에 경로가 하나도 없는 두 정점이 생기면 게임이 끝난다.

게임이 끝날 때까지 거치는 단계 수의 기댓값을 구하시오.

입력

첫째 줄에 정점의 수 nn과 간선의 수 mm이 주어진다. (1n6001 \le n \le 600, 1mn(n1)/21 \le m \le n(n-1)/2) 그래프의 정점에는 11번부터 nn번까지 번호가 붙어 있다.

다음 mm개 줄에는 줄마다 서로 다른 두 정수 aabb가 주어진다. (1a,bn1 \le a, b \le n) 정점 aa와 정점 bb를 잇는 간선이 있다는 뜻이다.

두 정점을 잇는 간선은 많아야 한 개이고, 입력으로 주어지는 그래프는 문제에서 설명한 선인장 그래프이다.

출력

게임이 끝날 때까지 거치는 단계 수의 기댓값을 한 줄에 출력한다. 소수점 아래 여섯째 자리까지 반올림하고, 소수점 아래 자리를 정확히 여섯 개 출력한다.