트리 위의 파란 정점 거리 합
시간 제한5초메모리 제한512 MB
가중치가 있는 트리에서 색칠 질의와 거리 합 질의를 처리하며, 각 2번 질의마다 x에서 파란 정점 전체까지의 거리 합을 출력한다.
문제
개의 정점으로 이루어진 트리가 있다. 정점에는 번부터 번까지 번호가 붙어 있고, 간선마다 길이가 정해져 있다. 두 정점 사이의 거리는 두 정점을 잇는 유일한 경로에 놓인 간선 길이의 합이다.
처음에는 모든 정점이 흰색이다. 이제 다음 두 종류의 쿼리를 주어진 순서대로 처리한다.
- 쿼리 1: 번 정점을 파란색으로 칠한다. 번 정점이 이미 파란색이면 그대로 파란색이고, 이 정점은 여전히 한 번만 센다.
- 쿼리 2: 번 정점과 모든 파란 정점 사이의 거리의 합을 구한다. 번 정점 자신이 파란색이면 거리 이 합에 들어간다. 파란 정점이 하나도 없으면 합은 이다.
모든 쿼리 2의 답을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정점의 개수 ()과 쿼리의 개수 ()가 주어진다.
다음 개의 줄에는 간선 정보 , , 가 주어진다. 번 정점과 번 정점이 길이 인 간선으로 연결되어 있다. (, , )
다음 개의 줄에는 쿼리가 한 줄에 하나씩 주어진다. 첫 번째 정수는 쿼리의 종류 또는 이고, 두 번째 정수는 ()이다.
출력
쿼리 2가 주어질 때마다 답을 한 줄에 하나씩, 주어진 순서대로 출력한다.