트리 위의 파란 정점 거리 합

가중치가 있는 트리에서 색칠 질의와 거리 합 질의를 처리하며, 각 2번 질의마다 x에서 파란 정점 전체까지의 거리 합을 출력한다.

어려움8트리누적 합DFS동적 계획법아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

NN개의 정점으로 이루어진 트리가 있다. 정점에는 00번부터 N1N-1번까지 번호가 붙어 있고, 간선마다 길이가 정해져 있다. 두 정점 사이의 거리는 두 정점을 잇는 유일한 경로에 놓인 간선 길이의 합이다.

처음에는 모든 정점이 흰색이다. 이제 다음 두 종류의 쿼리를 주어진 순서대로 처리한다.

  • 쿼리 1: xx번 정점을 파란색으로 칠한다. xx번 정점이 이미 파란색이면 그대로 파란색이고, 이 정점은 여전히 한 번만 센다.
  • 쿼리 2: xx번 정점과 모든 파란 정점 사이의 거리의 합을 구한다. xx번 정점 자신이 파란색이면 거리 00이 합에 들어간다. 파란 정점이 하나도 없으면 합은 00이다.

모든 쿼리 2의 답을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정점의 개수 NN (2N100,0002 \le N \le 100{,}000)과 쿼리의 개수 QQ (1Q100,0001 \le Q \le 100{,}000)가 주어진다.

다음 N1N-1개의 줄에는 간선 정보 uu, vv, ww가 주어진다. uu번 정점과 vv번 정점이 길이 ww인 간선으로 연결되어 있다. (0u,vN10 \le u, v \le N-1, uvu \ne v, 0w1,000,0030 \le w \le 1{,}000{,}003)

다음 QQ개의 줄에는 쿼리가 한 줄에 하나씩 주어진다. 첫 번째 정수는 쿼리의 종류 11 또는 22이고, 두 번째 정수는 xx (0xN10 \le x \le N-1)이다.

출력

쿼리 2가 주어질 때마다 답을 한 줄에 하나씩, 주어진 순서대로 출력한다.