F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ LoginRegister 捐赠本站
Notice:1:注册本OJ方式请见https://www.lydsy.com/JudgeOnline/wttl/thread.php?tid=5671 2:请不要在讨论区中发空白主题帖。
Problem 5356. -- 红与蓝

5356: 红与蓝

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 50  Solved: 14
[Submit][Status][Discuss]

Description

给定一棵树,初始时非叶节点均为无色,叶节点会是红色、蓝色或无色。小红和小蓝轮流给无色叶子染色(小红染
红色,小蓝染蓝色,小红先染)。所有叶子染完后,非叶节点的颜色将被逐一确定:一个非叶节点的颜色是它所有
儿子的颜色中出现较多的那个(保证有奇数个儿子)。最后,根是谁的颜色谁就获胜。求小红是否能赢,若能赢,
求出第一步选择哪些叶子能赢。

Input

第一行一个整数t表示数据组数。

每组数据第一行一个整数n表示节点数。
第二行n个整数,第i个整数fi表示i的父亲,保证f1=0。
第三行n个整数,第i个整数gi表示i的初始颜色(0表示红色,1表示蓝色,-1表示无色)。

Output

每组数据输出一行。
若小红能赢,先输出一个整数m表示第一步可以选的叶子数,接下来m个整数表示那些叶子的编号,从小到大输出。
若你只知道小红能赢,你可以只输出一行一个整数0。
否则输出一个整数-1。
t<=10,n≤100000。

Sample Input

2
2
0 1
-1 -1
2
0 1
-1 1

Sample Output

1 2
-1

HINT

Source

[Submit][Status][Discuss]

HOME Back