자료 구조
시간 제한20초메모리 제한512 MB
뿌리가 1인 트리에서 노드 a의 자손 중 a와의 거리를 x로 나눈 나머지가 y인 노드에 z를 더하고, 특정 노드의 가중치를 묻는 문제입니다.
문제
Andy는 난징대학교에서 그를 따를 자가 없는 유명한 자료 구조 전문가이다. 어느 날 그는 평범하고 지루한 자료 구조 문제를 친구들에게 냈지만, 아무도 풀지 못했다. 당신은 어떤가?
루트가 1번인 트리가 주어진다. 각 노드의 가중치는 처음에 0이다. 두 노드 사이의 거리는 두 노드를 잇는 유일한 단순 경로의 간선 수이다. 다음 두 종류의 연산을 수행해야 한다.
- 1번 연산: 가 주어지면, 의 자손 중 자기 자신을 포함하여 와의 거리를 로 나눈 나머지가 인 노드들의 가중치에 를 더한다.
- 2번 연산: 가 주어지면 노드 의 가중치를 구한다.
입력
첫 줄에는 테스트 케이스의 수 가 하나의 정수로 주어진다.
각 테스트 케이스는 트리의 노드 수 과 연산의 수 을 나타내는 두 정수로 시작한다. 노드는 1번부터 번까지 번호가 매겨져 있다. 다음 줄에는 개의 정수 가 주어지며, 번째 정수는 노드 의 부모이다. 이후 개의 줄에 연산이 주어진다. 각 줄은 1번 연산 1 a x y z 또는 2번 연산 2 a 이다.
출력
각 테스트 케이스에서 2번 연산마다 답을 한 줄에 출력한다.