흑백조경사
시간 제한2초메모리 제한1024 MB
색칠된 나무의 각 정점을 뿌리로 삼았을 때 모든 내부 정점이 자손 다수 색으로 칠해지는지 확인하고, 조건을 만족하는 뿌리를 모두 찾는다.
문제
민아는 Even한 나무로 정원을 꾸미기로 유명한 조경사이다. 나무는 사이클이 없는 단순 연결 그래프를 의미한다. Even한 나무는 다음 조건을 만족하는 나무이다.
-
하나의 뿌리 정점을 가진다. 간선으로 연결된 두 정점은 부모-자식 관계를 가지며, 둘 중 뿌리 정점과 더 가까운 정점이 부모이다.
-
모든 정점은 흰색 또는 검은색으로 칠해져 있다.
- 자식이 없는 정점은 어떤 색이든 상관없다.
- 자식이 있는 정점은 모든 자손 정점의 색 중 더 많은 색으로 칠해져야 한다. 즉, 흰색 자손이 더 많다면 흰색, 검은색 자손이 더 많다면 검은색이어야 한다. 흰색 자손과 검은색 자손의 수가 같다면 어떤 색이든 상관없다. 이때, 임의의 서로 다른 두 정점 , 에 대해 에서 뿌리 정점으로 가는 단순 경로 사이에 가 있다면 는 의 자손이다.
민아는 HCPC 대회장을 아름답게 꾸미기 위해 개의 정점으로 이루어진 나무 한 그루를 뽑아 왔다. 하지만, 대회장에 도착하니 어떤 정점이 뿌리 정점이었는지 잊어버리고 말았다! 어떤 정점을 뿌리로 삼는지에 따라 Even한 나무가 될 수도, 그렇지 않을 수도 있다. 나무를 뽑아 오느라 탈진한 민아를 대신해 뿌리가 되었을 때 나무가 Even해지는 정점을 모두 찾는 프로그램을 작성해 주자.
입력
첫째 줄에 정점의 개수 이 주어진다.
둘째 줄에 개의 정수 , , , 이 공백으로 구분되어 주어진다. 번 정점의 색이 흰색이라면 , 검은색이면 이다.
셋째 줄부터 줄에 걸쳐 나무의 각 간선이 잇는 두 정점의 번호 , 가 공백으로 구분되어 주어진다.
출력
첫째 줄에 조건을 만족하는 정점의 수를 출력한다.
둘째 줄에 조건을 만족하는 모든 정점의 번호를 공백으로 구분하여 오름차순으로 출력한다.
조건을 만족하는 정점이 없다면 둘째 줄은 출력하지 않는다.