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

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

내적

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

요약
두 트리가 주어질 때, 모든 정점 쌍 (i, j)에 대해 첫 번째 트리의 거리와 두 번째 트리의 거리를 곱한 값의 합을 10^9+7로 나눈 나머지를 구합니다.
난이도

어려움10점 중 9점

유형
트리, 분할 정복, DFS
정답자
아직 제출이 없습니다

문제

Chiaki는 트리를 두 개 가지고 있으며, 각 트리는 1,2,…,n1, 2, \ldots, n 번호가 붙은 정점 nn개로 이루어져 있습니다. d1(i,j)d_1(i, j)를 첫 번째 트리에서 정점 ii와 jj 사이의 거리, d2(i,j)d_2(i, j)를 두 번째 트리에서 정점 ii와 jj 사이의 거리라고 합니다.

다음과 같이 배열을 정의합니다.

A=[d1(1,1),d1(1,2),…,d1(1,n),d1(2,1),…,d1(n,n)]A = [d_1(1, 1), d_1(1, 2), \ldots, d_1(1, n), d_1(2, 1), \ldots, d_1(n, n)]

B=[d2(1,1),d2(1,2),…,d2(1,n),d2(2,1),…,d2(n,n)]B = [d_2(1, 1), d_2(1, 2), \ldots, d_2(1, n), d_2(2, 1), \ldots, d_2(n, n)]

Chiaki는 AA와 BB의 내적을 구하려고 합니다. a=[a1,…,am]a = [a_1, \ldots, a_m]과 b=[b1,…,bm]b = [b_1, \ldots, b_m]의 내적은 ∑k=1makbk\sum_{k=1}^{m} a_k b_k입니다.

입력

입력은 여러 개의 테스트 케이스로 구성됩니다. 첫 줄에는 테스트 케이스의 수 TT가 주어집니다. 각 테스트 케이스의 첫 줄에는 정점의 수 nn (1≤n≤1051 \le n \le 10^5)이 주어집니다. 다음 n−1n-1개의 줄에는 첫 번째 트리에서 정점 uiu_i와 viv_i를 잇는 길이 wiw_i인 간선을 나타내는 세 정수 uiu_i, viv_i, wiw_i (1≤ui,vi≤n1 \le u_i, v_i \le n, 1≤wi≤1091 \le w_i \le 10^9)가 주어집니다. 이어서 같은 형식으로 두 번째 트리의 간선 n−1n-1개가 주어집니다. 모든 테스트 케이스의 nn의 합은 10510^5을 넘지 않습니다.

출력

각 테스트 케이스마다 AA와 BB의 내적을 109+710^9 + 7로 나눈 나머지를 한 줄에 출력합니다.

예제1

  1. 예제 1

    입력
    1
    2
    1 2 3
    1 2 4
    
    예상 출력
    24