Teleportgång | 프로그래밍의 벗 PivotOJ
PivotOJ

Teleportgång

시간 제한: 1000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2018 — finalBOJ 20870

문제

Du sitter och programmerar när telefonen plötsligt ringer. Det är din kompis Erik som behöver hjälp med ett problem. Han sitter fast i en grotta med flera rum, där vissa par av rum är sammankopplade med gångar. Det tar en sekund att gå mellan två sammankopplade rum. Erik befinner sig i ett rum och vill veta hur snabbt han kan ta sig till utgången. "Lätt som en plätt" tänker du, och börjar skriva din favorit-kortaste-vägen-algoritm. Men då kommer du ihåg att Erik har en ovanlig förmåga, han kan nämligen teleportera sig.

Erik befinner sig på nod nummer ss i en oriktad graf med nn noder och mm kanter, och han vill ta sig till utgången vid nod nummer tt. På en sekund kan han antingen gå till en närliggande nod eller teleportera sig. Om han teleporterar sig hamnar han på en likformigt slumpmässig nod (dvs. sannolikheten är 1n\frac{1}{n} för alla noder). Din uppgift är att räkna ut den minsta möjliga genomsnittliga tid det tar för honom att ta sig till nod nummer tt. Med andra ord, du ska hitta det minsta väntevärdet.

Här kommer en kort introduktion till väntevärden. Låt oss säga att Erik har valt en viss strategi, och låt pip_i vara sannolikheten att han lyckas ta sig till nod tt på exakt ii sekunder om han följer strategin. Väntevärdet definieras som 1p1+2p2+3p3+...1\cdot p_1 + 2\cdot p_2 + 3\cdot p_3 + ... Om man väljer en dålig strategi (t.ex. att gå fram och tillbaka mellan två noder och aldrig komma fram) så kan väntevärdet bli oändligt stort. Det är dock alltid möjligt att uppnå ett ändligt väntevärde -- om man exempelvis teleporterar sig om och om igen så blir väntevärdet nn.

입력

Den första raden innehåller två heltal nn och mm (2n1052 \leq n \leq 10^5 , 0m21050 \leq m \leq 2\cdot 10^5). Den andra raden innehåller två heltal ss och tt (1s,tn1 \leq s,t \leq n , sts \neq t): startnod och utgång. De följande mm raderna innehåller två heltal uiu_i och viv_i (1ui,vin1 \leq u_i , v_i \leq n , uiviu_i \neq v_i), vilket betyder att en kant går mellan noderna uiu_i och viv_i.

출력

Skriv ut ett tal: det minsta möjliga väntevärdet av tiden det tar att ta sig till utgången. Svaret anses korrekt om det har ett relativt eller absolut fel av högst 10210^{-2}.

예제

예제 1

입력
8 6
2 4
1 2
2 3
3 4
4 5
4 6
7 8
출력
2

예제 2

입력
5 0
1 2
출력
5

예제 3

입력
4 2
4 2
1 2
2 3
출력
2.0

예제 4

입력
6 6
6 2
1 2
3 2
3 1
3 5
5 6
5 4
출력
2.5
이 문제는 채점 준비 중입니다. 테스트 데이터가 확보되면 제출이 가능합니다.