만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

경로의 하한

시간 제한8초메모리 제한256 MB

요약
숫자 가중치가 있는 방향 그래프에서 0번 노드에서 1번 노드로 가는 모든 경로의 십진 값 하한을 구하고, 그 값을 10^9+7로 나눈 나머지를 구합니다.
난이도

보통10점 중 7점

유형
그래프, 그리디, 최단 경로
정답자
아직 제출이 없습니다

문제

방향 그래프에서 경로 pp의 사전식 가중치를 lex(p)lex(p)로 나타낸다. 경로 pp는 연속된 간선들의 수열로 볼 수 있다. 사전식 가중치는 다음 점화식으로 정의된다.

lex(\[])=0,lex(\[e1,e2,…,en])=w(e1)+lex(\[e2,e3,…,en])10,lex(\[]) = 0, lex(\[e_1, e_2, \ldots, e_n]) = \frac{w(e_1) + lex(\[e_2, e_3, \ldots, e_n])}{10}\text{,}

여기서 w(e1)w(e_1)은 간선 e1e_1의 가중치이며, 0 이상 9 이하의 정수이다.

주어진 방향 그래프에서 노드 0에서 노드 1로 가는 모든 경로의 사전식 가중치에 대한 하한을 구하라. 유리수 집합의 하한은, 존재한다면, 그 집합의 모든 원소 이하인 가장 큰 유리수이다.

입력

첫 줄에 테스트 케이스의 수 TT (1≤T≤1001 \le T \le 100)가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 줄에는 노드의 수 nn (2≤n≤20002 \le n \le 2000, ∑n≤20000\sum{n} \le 20000)과 간선의 수 mm (1≤m≤40001 \le m \le 4000, ∑m≤40000\sum{m} \le 40000)이 주어진다.

이어지는 mm개의 줄에는 정수 uu, vv, ww (0≤u,v<n0 \le u, v < n, 0≤w≤90 \le w \le 9)가 각각 주어진다. 이는 uu에서 vv로 가는 가중치 ww의 간선을 뜻한다.

각 테스트 케이스에서 노드 0에서 노드 1로 가는 경로가 적어도 하나 존재함이 보장된다.

출력

각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄을 출력한다. 여기서 xx는 1부터 시작하는 테스트 케이스 번호이다. yy는 답을 (109+7)(10^9 + 7)로 나눈 나머지이다. 구체적으로, 답이 기약분수 AB\frac{A}{B}로 표현될 수 있다면 yy는 (A⋅B−1) mod (109+7)(A \cdot B^{-1}) \bmod (10^9 + 7)이다.

힌트

첫 번째 테스트 케이스에서 하한을 이루는 경로는 0→2→4→10 \to 2 \to 4 \to 1이므로, 답은 0.3130.313이다.

예제1

  1. 예제 1

    입력
    2
    5 5
    0 2 3
    2 3 4
    2 4 1
    3 1 2
    4 1 3
    5 6
    0 1 9
    2 0 6
    3 0 1
    0 3 3
    4 0 3
    4 2 7
    
    예상 출력
    Case #1: 241000002
    Case #2: 40404041