만드는 중입니다

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

최소 스패닝 트리 다시 그리기 놀이

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

요약
연결된 가중치 그래프가 주어질 때, 가중치 x의 간선 묶음을 확률 1/x로 지운 뒤 다시 그릴 수 있는 MST 개수의 기댓값을 구합니다.
난이도

어려움10점 중 9점

유형
최소 신장 트리, 조합론, 확률, 그래프
정답자
아직 제출이 없습니다

문제

하늘이는 최근 입대하였다. 하늘이의 선임은 하늘이가 사회에서 코딩하다 온 것을 알고, 하늘이에게 다음과 같이 “최소 스패닝 트리 다시 그리기 놀이”를 알려 주었다.

  • 먼저 선임이 후임에게 무향 연결 그래프 GG를 준다. 이때 GG를 구성하는 간선의 가중치는 모두 10610^6 이하의 양의 정수이다.
  • 후임은 GG에서 그릴 수 있는 서로 다른 최소 스패닝 트리 중 같은 확률로 최소 스패닝 트리 TT를 하나 고른다.
  • 선임은 11부터 10610^6까지 차례대로 각각 독립적으로, 정수 xx를 1x\frac{1}{x}의 확률로 후임에게 말한다. 즉, 11은 반드시 말하므로, 최소 11개 이상 10610^6개 이하의 수를 말한다.
  • 후임은 선임이 xx를 말하면 TT에서 가중치가 xx인 간선을 모두 지운다. TT에서 간선들이 지워진 상태를 T′T^\prime이라고 하자.
  • 후임은 T′T^\prime에, 원래 그래프 GG에 있는 간선을 00개 이상 추가하여 다시 GG의 최소 스패닝 트리를 만든다.

하늘이는 이 놀이를 듣고, 새로 그릴 수 있는 최소 스패닝 트리의 개수가 몇 개인지 궁금해졌다. 선임이 후임에게 주는 그래프 GG가 주어졌을 때, “최소 스패닝 트리 다시 그리기 놀이”를 통해 그릴 수 있는 최소 스패닝 트리 개수의 기댓값을 구해보자.

입력

첫 번째 줄에 그래프 GG의 정점 개수 VV와 간선 개수 EE가 공백으로 구분되어 주어진다. (2≤V≤500,V−1≤E≤V(V−1)2)(2\le V\le 500, V-1\le E\le\frac{V(V-1)}{2}) 두 번째 줄부터 EE개의 줄에 걸쳐 간선 정보가 주어진다. 정수 uiu_i, viv_i, wiw_i가 공백으로 구분되어 주어지며, 이는 uiu_i번 정점과 viv_i번 정점을 연결하는 가중치 wiw_i의 간선이 존재한다는 뜻이다. (1≤ui,vi≤V,ui≠vi,1≤wi≤106)(1\le u_i, v_i\le V, u_i \ne v_i, 1\le w_i\le 10^6) 주어지는 그래프는 연결 그래프이며, 임의의 두 정점 사이의 간선은 최대 한 개 존재함이 보장된다.

출력

GG에 대해 “최소 스패닝 트리 다시 그리기 놀이”를 통해 그릴 수 있는 최소 스패닝 트리 개수의 기댓값을 109+710^9+7로 나눈 나머지를 출력한다. 기약 분수 pq\frac{p}{q} (p≥0p\ge 0, q>0q>0, gcd⁡(p,q)=1\gcd(p,q)=1)를 MM으로 나눈 나머지는, q⋅q−1≡1(modM)q\cdot q^{-1}\equiv 1\pmod M을 만족하는 정수 q−1q^{-1}, 즉 qq의 MM에 대한 모듈로 곱셈 역원을 써서 p⋅q−1(modM)p\cdot q^{-1} \pmod M로 정의한다. 정수일 경우 q=q−1=1q=q^{-1}=1이므로 p(modM)p \pmod M을 뜻한다. 만약 정답의 분모가 109+710^9+7의 배수인 경우 기댓값 대신 -1을 출력한다.

예제4

  1. 예제 1

    입력
    4 6
    1 2 1
    1 3 1
    1 4 1
    2 3 1
    2 4 1
    3 4 1
    
    예상 출력
    16
    
  2. 예제 2

    입력
    5 5
    5 1 1
    2 4 2
    4 5 2
    1 2 1
    4 3 1
    
    예상 출력
    500000005
    
  3. 예제 3

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

    입력
    23 23
    20 21 108108
    23 1 309309
    4 5 1000000
    16 17 108108
    21 22 1000000
    19 20 124124
    14 15 124124
    7 8 108108
    2 3 124124
    3 4 309309
    10 11 309309
    22 23 108108
    9 10 108108
    13 14 1000000
    15 16 309309
    8 9 108108
    1 2 1000000
    5 6 1000000
    12 13 108108
    18 19 309309
    17 18 1000000
    6 7 309309
    11 12 1000000
    
    예상 출력
    857142007