트리와 색깔
시간 제한2초메모리 제한512 MB
각 정점에 색이 있는 루트 트리에서 f(v,c)를 v의 서브트리에서 색이 c 이하인 정점 수로 정의할 때, 모든 질의 답의 합을 1e9+7로 나눈 나머지를 구한다.
문제
N개의 정점과 개의 간선으로 이루어진 트리가 있다. 정점에는 부터 까지 번호가 붙어 있으며, 루트는 번 정점이다. 서로 다른 두 정점 사이를 잇는 경로는 정확히 하나 존재한다.
각 정점은 하나의 색깔을 가진다. 색깔은 이상 이하의 정수로 나타낸다. 정점 와 색깔 에 대하여 질의 를 다음과 같이 정의한다.
는 정점 를 루트로 하는 서브트리 안에서 색깔이 이하인 정점의 개수이다.
개의 질의 가 주어진다.
입력
첫째 줄에 , , 가 공백으로 구분되어 주어진다. 은 정점의 수, 은 질의의 개수, 는 색깔의 종류 수이며, , , 을 만족한다.
둘째 줄에 개의 정수가 공백으로 구분되어 주어진다. 번째 수는 번 정점의 색깔이며, 각 수는 이상 이하이다.
이어지는 개의 줄에는 트리의 간선 정보가 주어진다. 각 줄에는 간선을 이루는 서로 다른 두 정점의 번호 와 가 공백으로 구분되어 주어지며, 을 만족한다.
이어지는 개의 줄에는 질의 정보가 주어진다. 번째 줄에는 와 가 공백으로 구분되어 주어지며, 이고 이다.
출력
개의 질의에 대한 답을 모두 더한 뒤 로 나눈 나머지를 출력한다.