산적
시간 제한5초메모리 제한1024 MB
가중치가 있는 트리에서 마을 X로부터 거리 R 안에 드는 도로에 계약을 더하고, 특정 도로를 보호하는 계약 수를 묻는 질의에 답합니다.
문제
한 왕국에는 마을이 개 있고, 양방향 도로가 개 있습니다. 어떤 두 마을 사이든 하나 이상의 도로로 이루어진 경로로 오갈 수 있습니다. 번째 도로는 마을 와 를 잇고, 길이는 입니다.
상인들이 산적의 공격을 받는 일이 늘어나자, 왕은 자문관에게 충성스러운 무리를 경비 업체처럼 고용해 이 문제를 해결하라고 지시했습니다. 각 경비 계약은 본부가 있는 마을 를 중심으로 반경 안에 있는 모든 도로의 안전을 보장합니다. 도로가 계약으로 보호되려면, 에서 다른 어떤 마을까지 길이가 이하인 경로의 일부여야 합니다. 도로 하나가 여러 계약으로 보호될 수 있으며, 그만큼 더 안전해집니다.
새 계약에 대한 쿼리를 처리하고, 개별 도로에 대해 현재 그 도로를 보호하는 계약 수를 답해야 합니다.
입력
첫 줄에 마을 수 이 주어집니다. 이어지는 개의 줄에는 마을 와 를 잇고 길이가 인 도로를 나타내는 정수 , , 가 공백으로 구분되어 주어집니다.
다음 줄에는 쿼리 수 가 주어집니다. 이어지는 개의 줄은 쿼리를 나타냅니다. 새 경비 계약을 추가하는 쿼리는 문자 +로 시작하며, 본부 마을 와 반경 가 뒤따릅니다. 도로의 안전도를 묻는 쿼리는 문자 ?로 시작하며, 그 도로 번호 가 뒤따릅니다. 도로 번호는 입력에 주어진 순서대로 부터 까지입니다.
출력
? 쿼리마다 처리한 순서대로, 도로 를 현재 보호하고 있는 계약의 수를 한 줄에 출력합니다.