AT_abc289_e.[ABC289E] Swap Places

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个 NN 个顶点、MM 条边的简单无向图,顶点编号为 11 到 NN,边编号为 11 到 MM。第 ii 条边连接顶点 uiu_i 和顶点 viv_i。

此外,每个顶点都被涂成红色或蓝色之一。顶点 ii 的颜色用 CiC_i 表示,若 Ci=0C_i=0,则顶点 ii 被涂成红色,若 Ci=1C_i=1,则被涂成蓝色。

现在,高桥君在顶点 11,青木君在顶点 NN。

两人可以重复进行如下操作 00 次或多次:

  • 两人同时移动到当前所在顶点相邻的某一个顶点。
    但要求高桥君移动到的顶点颜色与青木君移动到的顶点颜色不同。

通过重复上述操作,能否让高桥君到达顶点 NN,青木君到达顶点 11?
如果可以,请输出所需操作次数的最小值;如果不可能,请输出 −1-1。

输入的开头给出 TT,请对 TT 个测试用例分别求解。

输入格式

输入按以下格式从标准输入读入。这里 testi\text{test}_i 表示第 ii 个测试用例。

TT
test1\text{test}_1
test2\text{test}_2
⋮\vdots
testT\text{test}_T

每个测试用例的格式如下:

NN MM
C1C_1 C2C_2 …\dots CNC_N
u1u_1 v1v_1
u2u_2 v2v_2
⋮\vdots
uMu_M vMv_M

输出格式

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

输入输出样例

  • 输入#1

    3
    4 4
    0 1 0 1
    1 2
    2 3
    1 3
    2 4
    3 3
    0 1 0
    1 2
    2 3
    1 3
    6 6
    0 0 1 1 0 1
    1 2
    2 6
    3 6
    4 6
    4 5
    2 4

    输出#1

    3
    -1
    3

说明/提示

限制条件

  • 1≤T≤10001 \leq T \leq 1000
  • 2≤N≤20002 \leq N \leq 2000
  • 1≤M≤min⁡(N(N−1)2, 2000)1 \leq M \leq \min\left(\frac{N(N-1)}{2},\ 2000\right)
  • Ci∈{0,1}C_i \in \{0, 1\}
  • 1≤ui,vi≤N1 \leq u_i, v_i \leq N
  • 输入给出的图是简单图
  • 输入的所有值均为整数
  • 所有测试用例中 NN 的总和不超过 20002000
  • 所有测试用例中 MM 的总和不超过 20002000

样例解释 1

对于第 1 个测试用例,高桥君和青木君可以按如下方式行动,在 33 次操作内达到目标状态,且这是最小次数。

  • 高桥君移动到顶点 33,青木君移动到顶点 22。
  • 高桥君移动到顶点 22,青木君移动到顶点 33。
  • 高桥君移动到顶点 44,青木君移动到顶点 11。

注意,在第 11 次移动时,两人不能都移动到顶点 22。(因为高桥君和青木君移动到的顶点颜色必须不同。)

对于第 2 个测试用例,无论两人如何行动,都无法达到目标状态。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页