트리와 깃발
시간 제한2초메모리 제한1024 MB
트리의 각 간선을 제거했을 때 두 정점에서 같은 종류의 깃발을 골라 다시 하나의 트리로 만드는 경우의 수를 간선마다 구한다.
문제
머슥은 개의 정점이 있는 트리와 종류의 깃발들을 가지고 있다. 깃발의 종류는 부터 까지의 정수로 표현된다. 각 정점은 개 이상 개 이하의 서로 다른 깃발을 가질 수 있다.
주어진 트리에서 두 개의 서로 다른 정점을 선택하고, 각 정점에서 깃발을 하나씩 선택할 때, 두 깃발이 같은 종류라면 두 정점을 잇는 간선을 추가할 수 있다.
주어진 트리에서 각 간선을 제거했을 때, 위 조건에 따라 깃발을 선택하여 간선을 추가하면 다시 하나의 트리가 되도록 깃발을 고르는 경우의 수를 구하여라.
입력
첫째 줄에 이 공백을 사이에 두고 주어진다.
둘째 줄부터 개의 줄에 걸쳐 트리의 간선들이 주어진다. 번째 줄에는 두 개의 정수 , 가 공백을 사이에 두고 주어진다. 이는 번 간선이 번 정점과 번 정점을 연결함을 의미한다.
이어서 개의 줄에 걸쳐 번째 줄에는 와 종류가 인 깃발을 가지고 있는 개의 서로 다른 정점들이 공백을 사이에 두고 주어진다. ;
출력
개의 줄에 걸처 번째 줄에 트리의 번 간선을 제거했을 때, 다시 하나의 트리가 되도록 깃발을 고르는 경우의 수를 구하여라.