AT_abc289_e [ABC289E] Swap Places

题目描述

有一个 $N$ 个顶点、$M$ 条边的简单无向图,顶点编号为 $1$ 到 $N$,边编号为 $1$ 到 $M$。第 $i$ 条边连接顶点 $u_i$ 和顶点 $v_i$。 此外,每个顶点都被涂成红色或蓝色之一。顶点 $i$ 的颜色用 $C_i$ 表示,若 $C_i=0$,则顶点 $i$ 被涂成红色,若 $C_i=1$,则被涂成蓝色。 现在,高桥君在顶点 $1$,青木君在顶点 $N$。 两人可以重复进行如下操作 $0$ 次或多次: - 两人同时移动到当前所在顶点相邻的某一个顶点。 但要求高桥君移动到的顶点颜色与青木君移动到的顶点颜色不同。 通过重复上述操作,能否让高桥君到达顶点 $N$,青木君到达顶点 $1$? 如果可以,请输出所需操作次数的最小值;如果不可能,请输出 $-1$。 输入的开头给出 $T$,请对 $T$ 个测试用例分别求解。

输入格式

输入按以下格式从标准输入读入。这里 $\text{test}_i$ 表示第 $i$ 个测试用例。 > $T$ > $\text{test}_1$ > $\text{test}_2$ > $\vdots$ > $\text{test}_T$ 每个测试用例的格式如下: > $N$ $M$ > $C_1$ $C_2$ $\dots$ $C_N$ > $u_1$ $v_1$ > $u_2$ $v_2$ > $\vdots$ > $u_M$ $v_M$

输出格式

输出 $T$ 行。第 $i$ 行输出第 $i$ 个测试用例的答案。 对于每个测试用例,若可以让高桥君到达顶点 $N$,青木君到达顶点 $1$,则输出所需操作次数的最小值;否则输出 $-1$。

说明/提示

### 限制条件 - $1 \leq T \leq 1000$ - $2 \leq N \leq 2000$ - $1 \leq M \leq \min\left(\frac{N(N-1)}{2},\ 2000\right)$ - $C_i \in \{0, 1\}$ - $1 \leq u_i, v_i \leq N$ - 输入给出的图是简单图 - 输入的所有值均为整数 - 所有测试用例中 $N$ 的总和不超过 $2000$ - 所有测试用例中 $M$ 的总和不超过 $2000$ ### 样例解释 1 对于第 1 个测试用例,高桥君和青木君可以按如下方式行动,在 $3$ 次操作内达到目标状态,且这是最小次数。 - 高桥君移动到顶点 $3$,青木君移动到顶点 $2$。 - 高桥君移动到顶点 $2$,青木君移动到顶点 $3$。 - 高桥君移动到顶点 $4$,青木君移动到顶点 $1$。 注意,在第 $1$ 次移动时,两人不能都移动到顶点 $2$。(因为高桥君和青木君移动到的顶点颜色必须不同。) 对于第 2 个测试用例,无论两人如何行动,都无法达到目标状态。 由 ChatGPT 4.1 翻译