밤에 길을 잃은 관광객
면접 대비시간 제한2초메모리 제한512 MB
트리에서 A에서 출발한 산책자가 매번 이웃을 균등한 확률로 골라 B나 C에 도착할 때까지 이동할 때, B를 먼저 만날 확률을 구한다.
문제
Nlogonia의 한 도시에는 로터리 개와 거리 개가 있다. 거리는 각각 서로 다른 두 로터리를 잇고, 이 거리만 이용해도 어떤 로터리에서 다른 어떤 로터리로든 갈 수 있다.
도시에 호텔은 둘뿐이다. 싼 호텔은 로터리 에, 비싼 호텔은 로터리 에 있다. 관광객 한 명이 친구의 생일을 축하하러 이 도시에 왔고, 파티는 로터리 에 있는 클럽에서 열린다. 두 호텔 중 어느 쪽도 예약하지 않았고 밤 공기가 좋아서, 관광객은 파티가 끝난 뒤 거리와 로터리를 걸어 다니다가 처음 발견한 호텔에 묵기로 했다.
계획은 생각보다 어려워졌다. 도시를 모르고 술도 좀 과하게 마셔서 모든 거리가 똑같아 보이기 때문이다. 그래서 관광객은 이렇게 걷는다. 로터리에 도착하면 그 로터리에서 나가는 거리 중 하나를 모두 같은 확률로 고르고, 고른 거리로 다른 로터리까지 이동한다. 호텔이 있는 로터리에 도착하면 걷기를 멈춘다. 거리를 구별하지 못하니 방금 걸어 들어온 거리를 다시 고르기도 한다.
도로망, 파티가 열리는 로터리 , 싼 호텔이 있는 로터리 , 비싼 호텔이 있는 로터리 가 주어질 때 관광객이 비싼 호텔보다 싼 호텔에 먼저 도착할 확률을 구하는 프로그램을 작성하라.
입력
입력은 테스트 케이스 여러 개로 이루어지고 파일 끝에서 끝난다. 각 테스트 케이스의 첫 줄에는 정수 , , , 가 주어진다. 차례로 도로망의 로터리 수, 생일 파티가 열리는 로터리, 싼 호텔이 있는 로터리, 비싼 호텔이 있는 로터리다. 이어지는 개 줄에는 각각 정수 와 가 주어지고, 로터리 와 로터리 를 잇는 거리가 있다는 뜻이다.
제약
- 테스트 케이스는 100개를 넘지 않는다.
- , ,
- 주어지는 거리 개는 항상 모든 로터리를 연결한다.
출력
테스트 케이스마다 한 줄에 관광객이 비싼 호텔보다 싼 호텔에 먼저 도착할 확률을 소수점 여섯째 자리까지 반올림해 출력한다. 여섯 자리를 모두 채워서 쓴다. 확률이 0이면 0.000000, 1이면 1.000000이다.