트리와 색깔과 쿼리
시간 제한2.5초메모리 제한1024 MB
루트가 있는 트리에서 각 정점의 색을 관리하며, 서브트리와 경로에 대해 색별 개수에 순열 값을 곱한 합을 구하고 색 갱신을 처리한다.
문제
개의 정점으로 구성된 트리가 주어진다. 각 정점에는 번부터 번까지 번호가 붙어 있고, 번 정점은 트리의 루트이다. 추가로 각 정점은 색깔 를 가지고 있다. 정점의 색깔은 이상 이하의 정수로 나타내어진다.
다음 세 가지 쿼리를 수행하는 프로그램을 작성하시오. 는 부터 까지의 정수가 한 번씩 등장하는 순열이며, 입력에서 주어진다.
1: 정점 를 루트로 하는 서브트리에 색깔이 인 정점의 수를 라고 할 때 를 출력한다.2: 두 정점 와 를 잇는 경로에 색깔이 인 정점의 수를 라고 할 때 를 출력한다.3: 정점 의 색깔을 로 바꾼다.
입력
첫 번째 줄에 정수 , 가 공백으로 구분되어 주어진다.
두 번째 줄에 개의 정수 이 공백으로 구분되어 주어진다.
세 번째 줄에 개의 정수 이 공백으로 구분되어 주어진다. 이며, 는 순열이다.
네 번째 줄부터 개의 줄에 걸쳐 트리에서 번째 간선이 연결하는 두 정점 번호 가 공백으로 구분되어 주어진다.
이어서 개의 줄에 각 쿼리가 다음 형식 중 하나로 주어진다. 는 정수
123
출력
번과 번 쿼리의 결과를 한 줄에 하나씩 출력한다. 번 혹은 번 쿼리가 개 이상 주어짐이 보장된다.