트리 헐
시간 제한3초메모리 제한256 MB
트리 정점 집합에 정점을 넣고 빼는 질의를 처리하면서, 매 질의 후 현재 집합을 모두 포함하는 최소 부분 트리의 간선 가중치 합을 구한다.
문제
가중치가 있는 트리가 주어진다.
트리의 정점 부분집합 를 생각하자. 처음에 는 공집합이고, 에 정점을 추가하거나 에서 정점을 제거하는 질의를 처리해야 한다.
각 질의를 처리한 뒤, 의 모든 정점을 포함하는 최소 부분트리의 가중치를 구하라. 부분트리의 가중치는 그 간선들의 가중치 합으로 정의한다.
입력
첫째 줄에 트리의 크기 이 주어진다 ().
다음 개 줄에 트리의 간선이 주어진다. 각 간선은 " " 형태로 주어지며, 양 끝 정점과 가중치를 나타낸다 (, , ). 주어진 간선들이 트리를 이룸이 보장된다.
다음 줄에 질의의 수 가 주어진다 ().
다음 개 줄에 질의가 주어진다. 각 질의는 " " 형태로 주어지며, 는 "+" (에 정점 추가) 또는 "-" (에서 정점 제거)이고 는 정점 번호이다 (). 이미 에 있는 정점을 추가하거나, 에 없는 정점을 제거하는 질의는 주어지지 않음이 보장된다.
출력
개의 수를 출력한다. 각 질의를 처리한 뒤 의 모든 정점을 포함하는 최소 부분트리의 가중치를 출력하라. 가 공집합이면 을 출력한다.