COT3 - Combat on a tree
Alice and Bob are playing a game on a tree of n nodes. Each node is either black or white initially.
They take turns to do the following operation:
- Choose a white node v from the current tree;
- Color all white nodes on Path(1, v) to black.
The player who takes the last turn wins.
Now Alice takes the first turn. Help her find out if she can win when they both use optimal strategy.
Input
The first line of input contains a integer n representing the number of nodes in the tree. 1 ≤ n ≤ 100000
The second line contains n integers c1, c2 ... cn. 0 ≤ ci ≤ 1.
ci = 0 means the ith node is white initially and ci = 1 means black.
Next n-1 lines describes n-1 edges in the tree. Each line contains two integers u and v, means there is a edge connecting u and v.
Output
If Alice can't win print -1.
Otherwise determine all the nodes she can choose in the first turn in order to win. Print them in ascending order.
Example
Input #1: 8
1 1 0 1 0 0 1 0
1 2
1 3
2 6
3 4
3 5
5 7
7 8 Output #1: 5
Input #2:
20
1 1 1 0 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0
1 2
2 3
2 4
1 5
1 6
5 7
5 8
2 9
8 10
1 11
1 12
9 13
6 14
14 15
7 16
11 17
2 18
7 19
12 20 Output #2
8
11
12
Added by: | Fotile |
Date: | 2012-04-20 |
Time limit: | 0.103s-1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: ASM64 |