Bancopia

시간 제한1초메모리 제한128 MB

요약
최대 m개의 경찰 초소를 세워 도로의 강도 확률을 절반으로 줄일 때, a에서 b까지 가장 안전한 경로의 강도 확률을 최소로 만드는 값을 구한다.
난이도

어려움10점 중 8점

유형
그래프, 최단 경로, 동적 계획법, 완전 탐색
정답자
아직 제출이 없습니다

문제

Bancopia에서는 강도 사건이 잦아 금괴 수송이 위험하며, 어떤 도로는 다른 도로보다 더 위험하다. 두 도시 사이에서 금괴를 안전하게 옮기기 위해, Bancopia는 일부 도로에 경찰 초소를 세워 그 도로를 더 안전하게 만들려고 한다.

주어지는 것은 Bancopia의 도시들, 도시들을 잇는 도로들, 그리고 금괴 수송이 이루어지는 두 도시이다. 각 도로에는 강도 확률이 있다. 이는 금괴 수송이 그 도로를 지날 때 그 도로에서 강도를 당할 확률을 뜻한다. 서로 다른 도로에서 강도를 당하는 사건은 서로 독립이라고 가정한다.

또한 설치할 수 있는 경찰 초소의 최대 개수가 주어진다. 한 도로에는 초소를 최대 한 개만 세울 수 있으며, 경찰 초소는 그 도로의 강도 확률을 정확히 절반으로 줄인다.

수송은 항상 두 도시 사이의 가장 안전한 경로, 즉 전체 강도 확률이 가장 작은 경로를 택한다. 어떤 경로가 (절반으로 줄었을 수도 있는) 강도 확률 p1,p2,…,pkp_1, p_2, \dots, p_k 인 도로들을 지난다면, 그 경로의 전체 강도 확률은 1−∏i=1k(1−pi)1 - \prod_{i=1}^{k}(1 - p_i) 이다.

가장 안전한 경로의 강도 확률이 최소가 되도록 경찰 초소를 배치했을 때, 그 최소 확률을 구하라.

입력

첫 번째 줄에는 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스의 형식은 다음과 같다.

  • 한 줄에 다섯 정수 nn, ww, mm, aa, bb가 공백으로 구분되어 주어진다. 여기서 2≤n≤1002 \le n \le 100 은 도시의 수, 1≤w≤1041 \le w \le 10^4 은 도로의 수, 1≤m≤1001 \le m \le 100 은 설치할 수 있는 경찰 초소의 최대 개수이며, aa와 bb는 수송이 이루어지는 두 도시이다. 도시는 {1,…,n}\{1, \dots, n\} 의 서로 다른 정수로 번호가 매겨진다.
  • 이어지는 ww개의 줄에 각 도로가 하나씩 주어진다. 각 줄에는 세 값 s1s_1, s2s_2, pp가 공백으로 구분되어 주어지며, s1s_1과 s2s_2는 도로가 잇는 두 도시(s1≠s2s_1 \ne s_2, 1≤s1,s2≤n1 \le s_1, s_2 \le n), 0≤p≤10 \le p \le 1 은 그 도로의 강도 확률이다.

같은 도시 쌍을 잇는 도로가 두 개 이상 주어지지는 않는다. 모든 도로는 양방향이며, 진행 방향에 관계없이 강도 확률이 같다. aa에서 bb로 가는 경로가 적어도 하나 존재함이 보장된다.

출력

각 테스트 케이스마다 한 줄에 하나의 수를 출력한다. 이 수는 강도 확률이 최소가 되도록 경찰 초소를 최대 mm개까지 배치했을 때 aa에서 bb까지 가장 안전한 경로의 강도 확률이며, 소수점 아래 넷째 자리까지 반올림하여 출력한다. 반올림은 통상적인 방식(반올림, round half up)을 따른다. 즉 0.12345…0.12345\ldots 는 0.12350.1235 로, 0.12344…0.12344\ldots 는 0.12340.1234 로 반올림한다.

그림 1: 지도는 한 가지 상황을 보여준다. 왼쪽 지도는 경찰 초소가 없을 때의 가장 안전한 경로이고, 오른쪽 지도는 초소를 배치한 뒤의 가장 안전한 경로이다. 각 도시에는 번호가 매겨져 있고, 각 도로 옆에는 그 도로의 강도 확률이 적혀 있다. 도착 도시 옆에는 경로 전체의 강도 확률이 적혀 있다.

예제3

  1. 예제 1

    입력
    1
    6 8 2 1 6
    1 2 0.1
    1 3 0.15
    2 3 0.05
    2 4 0.1
    3 5 0.05
    4 5 0.15
    4 6 0.2
    5 6 0.02
    
    예상 출력
    0.1162
    
  2. 예제 2

    입력
    1
    2 1 1 1 2
    1 2 0.4
    
    예상 출력
    0.2000
    
  3. 예제 3

    입력
    1
    3 3 1 1 3
    1 3 0.5
    1 2 0.1
    2 3 0.1
    
    예상 출력
    0.1450