트리와 쿼리 21
시간 제한5초메모리 제한1024 MB
가중치가 있는 트리에서 간선을 끊고 새로 잇는 연산을 처리하고, 주어진 정점 집합 사이 경로들의 합집합 간선 가중치 합을 구합니다.
문제
개의 정점으로 이루어진 트리가 있다. 정점은 번부터 번까지 번호가 매겨져 있다. 간선에는 음이 아닌 정수 가중치가 매겨져 있다.
다음 두 종류의 쿼리를 처리해야 한다.
1 u v w x: 정점 와 를 잇는 간선을 제거하고, 정점 와 를 잇는 가중치 의 간선을 추가한다. 와 를 잇는 간선이 존재함이 보장된다. 연산을 수행한 뒤에도 그래프가 여전히 트리임이 보장된다. ()2 k x1 x2 ... xk: 정점 에 대해, 모든 인 와 를 잇는 유일한 단순 경로를 생각한다. 이 단순 경로들을 이루는 간선의 합집합에 포함된 모든 간선의 가중치 합을 출력한다. 모든 는 서로 다르다. ()
입력
첫째 줄에 트리의 크기 이 주어진다. ()
이어지는 개의 줄에 세 정수 , , 가 주어진다. 이는 정점 와 를 잇는 가중치 의 간선이 존재함을 뜻한다. (, )
다음 줄에 쿼리의 개수 가 주어진다. ()
이어지는 개의 줄에 위에서 설명한 쿼리가 주어진다.
2번 쿼리의 의 합은 1 이상 100,000 이하이다.
출력
2번 쿼리의 결과를 순서대로 한 줄에 하나씩 출력한다.