신성한 숲의 탐색
시간 제한1초메모리 제한2048 MB
트리와 순열 p가 주어질 때, p의 부분 구간에 속한 정점들이 트리에서 서로 연결된 구간의 개수를 구합니다.
배경
고대 루마니아의 깊은 곳, 빽빽한 숲과 높은 산이 만나는 자리에 바트라 코드릴로르 왕국이 있다. 왕국은 개의 신성한 숲으로 보호받는다. 숲에는 부터 까지 번호가 붙어 있고, 각 숲은 수호 정령이 지킨다. 숲들은 현명한 장로들만 아는 비밀 길로 이어져 있다. 정식으로 말하면, 비밀 길은 트리를 이룬다.
보름달이 뜬 어느 밤, 명의 수호자는 다키아 신들이 보낸 신성한 메시지를 받는다. 메시지는 목록 가 적힌 고대 두루마리다. 정식으로 는 길이가 인 수열이며, 부터 까지의 모든 수가 정확히 한 번씩 나타난다. 이 목록은 마지막 전투에서 수호자들이 서야 할 순서를 알려 준다.
과제
목록의 각 부분 구간 에 대해, 숲들이 다른 숲을 거치지 않고 비밀 길만으로 서로 이어져 있으면, 이 숲들의 수호자는 함께 모여 숲의 힘을 끌어낼 수 있다.
을 만족하는 부분 구간 중 이 성질을 가진 구간의 개수를 구하라.
입력
첫 줄에 정수 ()이 주어진다.
이어지는 개의 줄에는 트리의 간선을 나타내는 두 정수 , ()가 주어진다.
마지막 줄에는 서로 다른 개의 정수 ()이 주어진다.
출력
조건을 만족하는 부분 구간 ()의 개수를 정수 하나로 출력한다. 즉, 숲들이 연결된 부분 그래프를 이루는 구간의 수다.