최소 스패닝 트리와 쿼리

가중치 방향 그래프 G와 i개 정점의 방향 경로 그래프의 텐서 곱에 대해, i가 2부터 Q+1까지 각각의 최소 스패닝 트리 간선 가중치 합을 구한다.

어려움9최소 신장 트리그래프수학세그먼트 트리아직 제출이 없습니다시간 제한5초메모리 제한256 MB

문제

Path_iPath\_iii 개의 정점을 가진 방향 그래프로, 모든 1j<i1 \le j < i 에 대해 jj+1j \rightarrow j + 1 로 가는 간선이 존재한다.

가중치 있는 방향 그래프 G_1G\_1 과 방향 그래프 G_2G\_2 의 텐서 곱 (tensor product) G_1×G_2G\_1 \times G\_2 는 다음과 같이 정의된다:

  • 정점 집합은 (u,v)uG_1,vG_2\\{(u, v)|u \in G\_1, v \in G\_2\\} 의 형태다. 정점 집합의 크기는 G_1×G_2|G\_1| \times |G\_2| 이다.
  • 두 정점 (u_1,v_1),(u_2,v_2)(u\_1, v\_1), (u\_2, v\_2) 를 잇는 무방향 간선이 존재한다는 것은, G_1G\_1u_1u_2u\_1 \rightarrow u\_2 방향의 간선, G_2G\_2v_1v_2v\_1 \rightarrow v\_2 방향의 간선이 있음을 뜻한다. 
  • 간선의 가중치는, G_1G\_1에서 두 정점 u_1u_2u\_1 \rightarrow u\_2를 잇는 간선의 가중치와 동일하다. 

NN 개의 정점과 MM 개의 간선을 가진 방향 그래프 GG 가 입력으로 주어진다. 각 간선에는 양의 정수 가중치가 부여되어 있다. G×Path_iG \times Path\_i 라는 그래프를 생각하자. 이 그래프는 무방향이고 각 간선에 양의 정수 가중치가 부여되어 있다. 모든 2iQ+12 \le i \le Q + 1에 대해, G×Path_iG \times Path\_i 의 최소 스패닝 트리의 간선 가중치 합을 출력하라. 쿼리로 들어오는 모든 G×Path_iG \times Path\_i 에 대해 스패닝 트리가 항상 존재하게끔 입력이 주어짐이 보장된다.

입력

첫 번째 줄에 세 정수 N,Q,MN, Q, M 이 주어진다. (1N,Q100,000,1M200,0001 \le N, Q \le 100\\,000, 1 \le M \le 200\\,000)

이후 MM 개의 줄에 세 개의 정수 u_i,v_i,w_iu\_i, v\_i, w\_i 가 주어진다. u_iv_iu\_i \rightarrow v\_i 방향의 가중치 w_iw\_i 의 간선이 존재한다는 뜻이다. (1u_i,v_iN,1w_i301 \le u\_i, v\_i \le N, 1 \le w\_i \le 30)

출력

QQ 개의 줄을 출력하라. 이 중 ii 번째 줄에는 G×Path_i+1G \times Path\_{i + 1} 에서의 문제의 정답을 출력해야 한다.