보그 부기
시간 제한1초메모리 제한128 MB
연결된 무방향 그래프와 고정된 보행 경로가 주어질 때, 무작위로 걷는 감시자와 선장이 충돌하거나 자리를 바꾸지 않을 확률을 구한다.
문제
우주선 함장은 위험한 직업입니다. 특히 보그(Borg) 영역에서 임무를 수행할 때는 더욱 그렇습니다. 오늘 함장은 보그 우주선에 순간이동으로 잠입하여 쓸 만한 정보를 찾아내야 합니다.
이 우주선은 길이가 모두 같은 통로로 연결된 방들로 이루어져 있습니다. 어떤 두 방 사이에도 직접 연결하는 통로는 많아야 하나뿐이며, 임의의 방에서 다른 어떤 방으로도 이동할 수 있습니다. 즉, 우주선은 하나의 연결된 그래프입니다.
오래전 보그가 남겨 둔 감시병 하나가 배 안을 무작위로 순찰합니다. 감시병은 1분마다 현재 방과 통로로 이어진 이웃 방 중 하나를 같은 확률로 골라 그 방으로 이동합니다. 아주 오랫동안 배회해 왔기 때문에, 함장이 잠입하는 순간 감시병의 위치는 무작위이며, 특정 방에 있을 확률은 그 방에 연결된 통로의 수(그 방의 이웃 수)에 비례합니다.
함장은 정해진 순서대로 방들을 방문하라는 명령을 받았습니다. 이 방문 순서는 배 위의 하나의 워크(walk)로, 이웃한 방끼리 통로로 이어져 있으며 같은 방을 여러 번 지날 수도 있습니다. 함장은 각 방에서 정확히 1분씩 머무르며, 함장과 감시병이 정확히 같은 순간에 이동하도록 시간을 맞춥니다.
함장은 다음 두 경우에만 붙잡힙니다. 동시에 이동한 뒤 둘이 같은 방에 있게 되거나, 서로 방을 맞바꾸는 경우(함장이 감시병이 방금 떠난 방으로 들어가고, 동시에 감시병이 함장이 방금 떠난 방으로 들어가는 경우)입니다. 함장은 워크의 첫 번째 방으로 순간이동해 내려오고 마지막 방에서 순간이동해 올라가며, 이 두 방에서도 붙잡힐 위험이 있습니다.
함장이 한 번도 붙잡히지 않고 전체 워크를 완수할 확률을 구하세요.
입력
첫째 줄에 방의 개수 ()이 주어집니다.
둘째 줄에 함장이 방문해야 하는 방의 개수 ()이 주어집니다.
셋째 줄에 함장의 워크를 이루는 개의 방 번호가 순서대로 주어집니다(방 번호는 부터 시작합니다).
다음 개의 줄은 각 방을 설명합니다. 번째 줄(방 , 부터 시작)은 방 의 이웃 수 로 시작하고, 이어서 그 이웃 방들의 번호 개가 주어집니다.
출력
함장이 감시병에게 한 번도 들키지 않고 임무를 완수할 확률을 소수점 아래 정확히 자리까지 반올림하여 출력하세요(예: 0.500000).