트리 위의 세 사람
시간 제한4초메모리 제한1024 MB
서로 다른 세 정점의 쌍별 최소 공통 조상이 세 정점이 아닌 D로 같고 D까지의 거리 합이 K인 사람 세 명 조합의 수를 구한다.
문제
정점이 개인 트리가 하나 있다. 각 정점에는 부터 까지의 정수 번호가 매겨져 있다. 루트는 번 정점이다.
각 정점마다 사람들이 서 있는데, 번 정점에는 명의 사람이 서 있다 . 또한, 양의 정수 가 주어진다.
트리 상의 두 정점 , 에 대해 를 와 의 최소 공통 조상, 를 두 정점을 잇는 최단 경로에 있는 간선 개수로 정의한다.
이제 이 트리에서 서로 다른 사람 세 명을 고르자. 세 명은 모두 서로 다른 정점에 서 있어야 하고, 세 사람의 정점 번호의 집합을 라고 했을 때 다음 조건을 만족해야 한다.
그렇게 되도록 사람 세 명을 고르는 방법이 총 몇 가지 있는지 구하여라. 그 값이 클 수 있으니, 으로 나눈 나머지를 출력하여라.
입력
첫 번째 줄에 줄에 트리의 정점 수 , 문제에서 설명한 정수 가 공백으로 구분되어 주어진다.
두 번째 줄에 개의 정수 이 공백으로 구분되어 주어진다. 는 번 정점의 부모 정점 번호이다.
세 번째 줄에 개의 정수 이 공백으로 구분되어 주어진다.
출력
주어진 트리에서 세 사람을 조건에 맞게 고르는 방법의 수를 으로 나눈 나머지를 출력한다.