드래그스터

모든 쌍의 승리 확률과 토너먼트 대진표가 주어질 때, 1번 선수가 우승할 확률을 구한다.

보통4확률트리DFS아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

드래그스터 경기는 브라질에서는 인기 종목이 아니지만 미국에서는 많은 관중을 끌어모은다. 팬은 시속 400km까지 내달리는 차를 보러 오고, 한 번의 주행이 몇 초에 그쳐도 개의치 않는다. 참가자 중에는 차체에 로켓과 온갖 장치를 얹어 초고속 차를 만든 아마추어 정비사가 많다.

드래그스터 대회는 토너먼트로 치른다. 한 경주에서는 참가자 두 명이 나란히 달리고, 먼저 도착한 한 명만 승자가 된다. 승자끼리 다시 짝을 지어 경주를 이어가고 마지막에 한 명이 챔피언으로 남는다.

루벤스는 포뮬러 1을 포함해 여러 종목을 뛴 노련한 드라이버다. 몇 차례 어려움을 겪은 뒤 드래그스터에 전념하기로 했다.

포뮬러 1에서 쌓은 경험이 있어서 루벤스는 참가자를 지켜보기만 해도 두 사람이 맞붙었을 때 각자가 이길 확률을 말할 수 있다.

루벤스는 운전은 잘하지만 수학과 프로그래밍에는 약해서 당신에게 도움을 청했다. 루벤스가 계산한 모든 참가자 쌍의 확률과 토너먼트 경주 구성이 주어진다. 루벤스가 우승할 확률을 구하라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫 줄에는 대회 참가자 수를 나타내는 정수 NN이 주어진다 (2N3002 \le N \le 300). 참가자는 11부터 NN까지의 정수로, 경주는 N+1N + 1부터 2N12N - 1까지의 정수로 구분한다. 루벤스는 항상 참가자 11번이다.

이어지는 NN개의 줄에는 루벤스가 계산한 확률 행렬 MM이 주어진다. ii번째 줄에는 실수 Mi,jM_{i,j}NN개, 공백 하나로 구분되어 주어진다. Mi,jM_{i,j}는 참가자 ii가 참가자 jj와 맞붙어 이길 확률이다. iji \ne j이면 0.001Mi,j0.9990.001 \le M_{i,j} \le 0.999이고 Mi,j+Mj,i=1M_{i,j} + M_{j,i} = 1이며, i=ji = j이면 Mi,j=0M_{i,j} = 0이다. 모든 확률은 소수점 아래 세 자리로 주어진다.

다음 N1N - 1개의 줄에는 경주 하나를 설명하는 정수 AABB가 주어진다 (1A2N11 \le A \le 2N - 1, 1B2N11 \le B \le 2N - 1). 첫 줄은 번호가 N+1N + 1인 경주를, 둘째 줄은 번호가 N+2N + 2인 경주를 설명하고 그다음도 같은 방식이다. AABB는 참가자 번호이거나 경주 번호다. 경주 번호 kkAA 자리에 오면 경주 kk의 승자가 BB와 맞붙고, kkBB 자리에 오면 경주 kk의 승자가 AA와 맞붙는다.

참가자와 경주는 다른 경주의 출전자로 최대 한 번만 쓰이므로, AABB 자리에 한 번도 나오지 않는 경주 번호가 정확히 하나 있다. 그 경주가 결승이고 그 승자가 챔피언이다.

입력의 끝에는 00 하나만 있는 줄이 주어진다.

출력

각 테스트 케이스마다 루벤스가 우승할 확률을 소수점 아래 여섯 자리로 한 줄에 출력한다.