니콜과 누라는 지역 대회 미디어 팀에서 일한다. 대회가 진행되는 동안 누라는 경기장을 돌며 참가 팀 사진을 찍고, 니콜을 만나 사진을 넘긴다. 니콜은 그 사진을 대회 페이스북 페이지에 올린다. 참가 팀을 방해하지 않도록 대회 운영진은 두 사람이 이 일을 하는 동안 지나다닐 통로를 미리 정해 두었다. 통로는 서로 교차하며 전체가 하나의 그래프를 이룬다.
정리하면 이렇다. 통로가 교차하는 지점과 통로의 끝점을 정점으로 하는 그래프가 주어지고, 정점을 잇는 양방향 간선도 함께 주어진다. 간선으로 이어진 두 정점을 이웃이라고 부른다. 간선 하나를 지나는 데 시간이 1 걸린다.
대회가 시작하는 순간 니콜은 정점 A에, 누라는 정점 B에 서 있다. 두 정점이 같을 수도 있다. 매 시간 단위마다 두 사람은 각자 이웃한 정점 하나를 골라 그곳으로 옮겨 가거나, 그 시간 내내 서 있던 정점에 그대로 머무르는 쪽을 고른다. 이웃이 d개인 정점에서는 선택지가 d+1개이고, 각 선택지가 뽑힐 확률은 모두 d+11로 같다. 두 사람은 서로의 선택과 무관하게 독립적으로 고른다.
사진을 올리는 데 쓸 컴퓨터는 정점 C에 있다. 두 사람이 처음으로 정점 C에 동시에 서게 될 때까지 걸리는 시간의 기댓값을 구하여라.
첫 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스의 첫 줄에는 정점의 개수 V와 간선의 개수 E가 공백을 사이에 두고 주어진다.
둘째 줄에는 세 정수 A, B, C가 공백을 사이에 두고 주어진다. A는 니콜이 출발하는 정점, B는 누라가 출발하는 정점, C는 두 사람이 만나야 하는 정점의 번호다.
이어지는 E개의 줄에는 각각 두 정수 F와 G가 주어진다. 정점 F와 정점 G를 잇는 양방향 간선이 하나 있다는 뜻이다. 같은 정점 쌍을 잇는 간선은 많아야 하나이고, 자기 자신으로 이어지는 간선은 없다.
각 테스트 케이스마다 기댓값을 소수점 아래 셋째 자리까지 반올림해 한 줄에 출력한다. 두 사람이 정점 C에 동시에 서는 일이 절대 일어날 수 없으면 대신 Impossible을 출력한다.
모든 테스트에서 정확한 기댓값은 반올림이 갈리는 경계값, 즉 소수점 아래 넷째 자리가 5이고 그 아래가 모두 0인 값에서 10−5 이상 떨어져 있다. 따라서 셋째 자리 반올림 결과는 하나로 정해진다.