만드는 중입니다

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

삼색 신장 트리

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

요약
간선이 세 가지 색으로 칠해진 그래프에서 초록 간선이 g개 이하, 파랑 간선이 b개 이하인 신장 트리의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 행렬, 조합론
정답자
아직 제출이 없습니다

문제

bobo에게는 간선이 빨강, 초록, 파랑 중 하나로 칠해진 무방향 그래프 GG가 있다. bobo는 초록 간선을 gg개 이하, 파랑 간선을 bb개 이하로 포함하는 GG의 신장 트리 개수를 구하려 한다. 답은 (109+7)(10^9 + 7)로 나눈 나머지로 구한다.

입력

첫째 줄에 정수 네 개 nn, mm, gg, bb가 주어진다. nn은 GG의 정점 수, mm은 간선 수이다 (1≤n≤401 \leq n \leq 40, 0≤m≤1050 \leq m \leq 10^5, 0≤g,b<n0 \leq g, b < n).

정점은 1,2,…,n1, 2, \dots, n으로 번호가 매겨져 있다.

이어지는 mm개의 줄에는 정수 세 개 aia_i, bib_i, cic_i가 주어지며, 이는 정점 aia_i와 bib_i를 잇는 간선을 뜻한다 (1≤ai,bi≤n1 \leq a_i, b_i \leq n, ai≠bia_i \neq b_i, 1≤ci≤31 \leq c_i \leq 3). ci=1,2,3c_i = 1, 2, 3은 ii번째 간선이 각각 빨강, 초록, 파랑임을 뜻한다.

출력

신장 트리의 개수를 나타내는 정수 하나를 출력한다.

예제2

  1. 예제 1

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

    입력
    3 6 1 0
    1 2 1
    1 2 1
    2 3 1
    2 3 2
    3 1 2
    3 1 2
    
    예상 출력
    10