휘발유 가격
시간 제한3.5초메모리 제한1024 MB
트리의 각 정점에 가격 범위가 주어지고, 매년 두 경로의 대응하는 정점 가격이 같아야 한다는 조건이 추가됩니다. 각 해마다 가능한 가격 배정의 수를 구합니다.
문제
베를란디야는 개의 도시로 이루어진 거대한 나라다. 도로망은 뿌리가 있는 트리 모양이며, 나라 전체 도로는 개다. 두 도시를 잇는 길은 도시를 두 번 방문하지 않는 한 정확히 하나뿐이다. 각 도시 마다 도시 1로 가려면 도시 에서 처음으로 가야 하는 도시 가 정해져 있다. 즉, 도시 1을 루트로 하여 트리를 매달았을 때 는 도시 의 부모다. 각 도시에는 주유소가 하나씩 있다. 주유소 는 이상 이하의 어떤 가격으로든 휘발유를 팔 수 있다. 왕에게는 년 동안 해마다 아들 둘이 태어난다. 아들들은 어릴 때부터 국정에 참여하며, 매년 말에 휘발유 가격이 공정한지 점검한다. 년에 태어난 아들들은 에서 까지 가는 길과 에서 까지 가는 길의 가격을 점검한다. 점검은 다음과 같이 진행된다. 두 아들은 동시에 와 에서 출발한다. 첫째 아들은 에서 까지, 둘째 아들은 에서 까지 걷는다. 먼저 의 가격과 의 가격이 같은지 확인한다. 다음으로 두 경로의 두 번째 도시 가격이 같은지 확인한다. 세 번째, 네 번째 도시도 같은 방식으로 짝지어 확인하고, 마지막으로 의 가격과 의 가격이 같은지 확인한다. 두 경로의 길이는 항상 같다고 보장된다. 주유소는 법을 엄격히 지켜야 하므로 어떤 점검에서도 위반이 나오면 안 된다. 주유소들이 년 동안 가격을 정하는 방법의 수를 구한다. 즉, 각 ()에 대해, 처음 쌍의 아들이 태어난 뒤 모든 점검을 통과하고 모든 주유소의 가격이 허용 범위 안에 있도록 가격을 정하는 방법의 수를 구한다. 답은 로 나눈 나머지로 출력한다.
입력
첫 줄에 도시의 수 ()이 주어진다. 둘째 줄에는 개의 정수 ()이 주어진다. 이어지는 개의 줄에는 주유소 의 허용 가격 범위 , ()가 주어진다. 다음 줄에는 ()이 주어진다. 이어지는 개의 줄에는 , , , ()가 주어진다. 에서 까지의 길이와 에서 까지의 길이는 같다고 보장된다.
출력
개의 줄에 각각 정수 하나를 출력한다. 번째 줄에는 년까지 태어난 아들들이 위반을 찾지 못하는 가격 설정 방법의 수를 로 나눈 나머지로 출력한다.
힌트
첫 번째 예시를 살펴보자. 처음 두 아들이 태어난 뒤 도시 1과 2의 가격은 같아야 한다. 두 도시의 허용 범위에 모두 들어가는 공통 가격을 고르는 방법은 2가지다. 따라서 전체 방법 수는 이다. 두 번째 쌍은 경로 와 을 점검한다. 도시 1과 2의 가격은 이미 같으므로 두 번째 쌍이 태어나도 답은 바뀌지 않는다. 세 번째 쌍은 경로 와 을 점검한다. 그러면 도시 3과 4의 가격이 같아야 하고, 도시 1과 2의 가격도 같아야 한다. 도시 1과 2는 이미 일치한다. 도시 3과 4가 각자의 범위 안에서 공통 가격을 고르는 방법은 2가지다. 따라서 전체 방법 수는 이다. 네 번째 쌍은 경로 와 를 점검한다. 그러면 도시 4와 5의 가격이 같아야 한다. 도시 3과 4는 이미 일치하므로, 도시 3, 4, 5의 가격은 모두 같아야 한다. 도시 3의 가격은 3 이하여야 하고, 도시 5의 가격은 4 이상이어야 한다. 따라서 네 번째 쌍이 태어난 뒤에는 모든 점검을 통과하면서 가격을 허용 범위 안에 두는 방법이 없다.