아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

술 취한 산책

시간 제한2초메모리 제한512 MB

요약
가중치가 있는 DAG에서 최대 한 개의 간선을 제거해 정점 0에서 출발한 무작위 보행의 기대 길이를 최대로 만든다.
난이도

어려움10점 중 8점

유형
그래프, 동적 계획법, 확률, 그리디
정답자
아직 제출이 없습니다

문제

저녁에 술을 조금 과하게 마신 당신은 방향 그래프 위에서 긴 산책을 나섭니다. 다만 그래프에는 사이클이 없으므로 산책이 끝없이 이어지지는 않습니다.

당신은 정점 00에서 출발합니다. 어떤 정점에 있을 때마다, 그 정점에서 나가는 간선 중 하나를 따라 정점을 떠납니다. 이때 각 나가는 간선은 그 간선의 가중치에 비례하는 확률로 무작위로 선택됩니다. 나가는 간선이 하나도 없는 정점에 도착하면 그 자리에서 잠들고, 산책이 끝납니다. 산책의 길이는 당신이 지나간 간선의 개수입니다.

출발하기 전에(즉, 정점 00을 떠나기 전에) 그래프 어디에 있는 간선이든 마음에 들지 않는 간선 하나를 골라 산책 내내 무시할 수 있습니다. 아무 간선도 무시하지 않아도 됩니다. 간선을 무시하는 것은 그 간선을 그래프에서 제거하는 것과 같으므로, 유일한 나가는 간선을 무시당한 정점은 잠드는 정점이 됩니다.

산책 길이의 기댓값을 가능한 한 크게 만들 때, 그 최댓값을 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스의 첫 줄에는 두 정수 NN과 MM (2≤N≤10,0002 \le N \le 10{,}000, 1≤M≤100,0001 \le M \le 100{,}000)이 주어지며, 각각 그래프의 정점 수와 간선 수입니다. 이어지는 MM개의 줄에는 각각 세 정수 uu, vv, ww (1≤w≤1,0001 \le w \le 1{,}000)가 주어지며, 이는 정점 uu에서 정점 vv로 가는 가중치 ww의 방향 간선이 있음을 뜻합니다(정점은 00부터 N−1N-1까지 번호가 매겨집니다). 그래프에는 방향 사이클이 없음이 보장됩니다. 입력의 마지막 줄에는 N=M=0N = M = 0이 주어지며, 이 줄은 처리하지 않습니다.

출력

각 테스트 케이스마다, 산책 길이의 기댓값의 최댓값을 소수점 아래 정확히 88자리까지 반올림하여 한 줄에 출력하세요.

예제7

  1. 예제 1

    입력
    4 5
    0 1 2
    0 2 1
    0 3 3
    1 3 1
    2 3 4
    9 8
    0 1 1
    1 2 1
    2 3 1
    0 4 2
    4 5 10
    4 6 1
    6 7 1
    7 8 1
    0 0
    
    예상 출력
    2.00000000
    3.66666667
    
  2. 예제 2

    입력
    2 1
    0 1 5
    0 0
    
    예상 출력
    1.00000000
    
  3. 예제 3

    입력
    4 3
    0 1 1
    1 2 1
    2 3 1
    0 0
    
    예상 출력
    3.00000000
    
  4. 예제 4

    입력
    3 1
    1 2 3
    0 0
    
    예상 출력
    0.00000000
    
  5. 예제 5

    입력
    4 3
    0 1 10
    0 2 1
    2 3 1
    0 0
    
    예상 출력
    2.00000000
    
  6. 예제 6

    입력
    7 6
    0 1 1
    0 2 1
    0 3 1
    2 4 1
    3 5 1
    5 6 1
    0 0
    
    예상 출력
    2.50000000
    
  7. 예제 7

    입력
    4 4
    0 1 1
    0 2 1
    1 3 1
    2 3 1
    0 0
    
    예상 출력
    2.00000000