[BOJ 13033] 홍준이와 트리2
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
1
Time limit:
2.0s
Memory limit:
512M
Problem types
Allowed languages
0번 정점부터 N-1번 정점까지의 N개의 정점으로 구성된 트리가 주어진다.</p>
각 정점들은 흰색 또는 검은색으로 색칠되어 있으며 각 색으로 칠해진 정점의 수가 최소 1개임이 보장된다.
이때, 트리에서 k(0 ≤ k < n)개의 간선을 선택해서 그 간선들을 없앨 수 있다. 그러면 (k+1)개의 정점 집합이 나누어진다. 각 집합이 모두 단 하나의 검은색으로 칠해진 정점을 가지도록 트리를 분할하는 경우의 수를 구하시오. 값이 매우 커질 수 있으므로 109+7로 나눈 나머지 값을 출력한다.
입력 형식
첫 번째 줄에 정점의 개수 N(1≤N≤100000)이 주어진다.</p>
둘째 줄에 N-1개의 정수 p0, p1, ... , pn-2(0 ≤ pi ≤ i)이 주어진다. 정점 pk와 정점 k+1 사이에 간선이 있음을 의미한다.
셋째 줄부터 줄에 각 정점의 색깔을 나타내는 N개의 정수 x0, x1, ... , xn-1이 주어진다. xi가 0이면 i번째 정점이 흰색임을 나타내고, 1이면 검은색임을 나타낸다.
출력 형식
문제의 답을 109+7로 나눈 나머지 값을 출력한다.
예제 입력
3
0 0
0 1 1
예제 출력
2
Comments