「TAOI-1」椎名真昼
题目背景
**请注意赛后题目添加了多测。因此请将您的赛时代码进行修改后再提交。**
题目描述
你正在看轻小说,突然你的家长走了进来,于是你假装在写 OI 题目。
Alice 和 Bob 正在玩一款游戏,给定一个有向图,每个点初始有一个颜色(黑或白)。
双方轮流进行操作,Alice 先手,每次操作选定一个节点,将所有从该点开始,能到达的点(包括自身)颜色翻转。如果某次操作后所有节点都变为白色,则进行该次操作的人胜利。
假如双方都采用最优策略使得自己胜利,或者如果自己无法胜利,使得对方无法胜利。
给你节点的初始状态,请你求出最终的胜者,亦或者,没有胜者。
---
定义点 $u$ 能到达点 $v$,当且仅当存在数列 $(a_1,a_2,a_3,\cdots,a_k)$,其中 $k \ge 1$,使得 $\forall i \in [1,k)$,存在有向边 $a_i \to a_{i+1}$,且 $a_1=u$,$a_k=v$。
输入输出格式
输入格式
**本题有多组测试数据。**
第一行一个正整数 $T$,代表数据组数。
对于每组测试数据:
第一行两个整数 $n, m$,代表图的点数,边数。
第二行 $n$ 个整数,代表每个点开始时的颜色。$1$ 代表黑色,$0$ 代表白色。
接下来 $m$ 行,每行两个整数 $u, v$ 代表一条从 $u \to v$ 的边。
输出格式
对于每组测试数据:
如果最后 Alice 胜利,输出 `A`。
如果最后 Bob 胜利,输出 `B`。
如果双方(在对方的阻止下)都无法胜利,输出 `N`。
您无需输出空格或换行符。
输入输出样例
输入样例 #1
2
2 1
1 0
2 1
3 2
1 0 1
1 2
2 3
输出样例 #1
AN
说明
### 数据范围
**本题采用捆绑测试**。
- Subtask 1(5 points):$n \leq 2$,$m \leq 1$,$T=1$。
- Subtask 2(15 points):$n \leq 5$,$m \leq 8$,$T=1$。
- Subtask 3(25 points):保证所有点的初始颜色相同。
- Subtask 4(55 points):无特殊限制。
对于所有测试数据,$1 \leq n \leq 10^5$,$1 \leq m \leq 2 \times 10^5$,$1 \le T \le 15$。
### 样例解释
在第一组数据中,Alice 可以先手对节点 $1$ 进行操作。操作后所有节点变为白色。
在第二组数据中,双方都没有必胜的方法,因此双方会互相拖延对方阻止对方获胜。
---
「据说如果无论如何都输出 `N` 的话,有 $45\%$ 的几率能够得到正确答案?」
「怎么可能,不会真的有人造出这么蠢的数据吧……」