开关问题
时间限制:1秒 内存限制:256M
【题目描述】
有 \(n\) 个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关,如果为关就变为开。
你的目标是经过若干次开关操作后使得最后 \(n\) 个开关达到一个特定的状态。对于任意一个开关,最多只能进行一次开关操作。
你的任务是,计算有多少种可以达到指定状态的方法。(不计开关操作的顺序)
【输入格式】
第一行 一个数 \(n\),表示开关的数目。
第二行 \(n\) 个 0 或者 1 的数,表示开始时 \(n\) 个开关状态。
第三行 \(n\) 个 0 或者 1 的数,表示操作结束后 \(n\) 个开关的状态。
接下来 每行两个数 \(x\ y\),表示如果操作第 \(x\) 个开关,第 \(y\) 个开关的状态也会变化。输入以 0 0 结束。
【输出格式】
如果有可行方法,输出总数,否则输出“Oh,it's impossible~!!” 不包括引号。
【输入输出样例1】
Input
3
0 0 0
1 1 1
1 2
1 3
2 1
2 3
3 1
3 2
0 0
Output
4
【输入输出样例2】
Input
3
0 0 0
1 0 1
1 2
2 1
0 0
Output
Oh,it's impossible~!!
【数据限制】
对于 \(100\%\) 的数据,\(1≤n≤35\)
【来源】
Mr.he**