#P17122. [ICPC 2025 Shanghai R] Hamu

    ID: 19459 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 显示难度提高+/省选− 上传者: 标签>并查集2025上海Special Judge生成树二分图最近公共祖先 LCA构造ICPCAd-hoc分类讨论

[ICPC 2025 Shanghai R] Hamu

背景

试题来自 清华大学学生算法协会

题目描述

Dingdong 计划前往 Hamu 国旅行。

Hamu 国由 nn 座城市和 mm 条双向道路组成。在此次旅行之前,Dingdong 已经恰好访问过城市 iiaia_i 次。在这次旅行中,Dingdong 计划从城市 ss 进入 Hamu 国。之后的每一天,Dingdong 都会沿着某条道路前往一座城市并访问该城市一次。在最后一天的访问结束时,Dingdong 必须位于城市 ss 并从城市 ss 离开 Hamu 国。注意,在进入 Hamu 国的当天,Dingdong 不会访问城市 ss

Dingdong 希望,经过这次旅行后,结合他之前的访问次数,Hamu 国的每座城市被他访问的总次数均为偶数。Dingdong 时间有限,在这次旅行中最多只能访问 5n5n 座城市。请你帮他构造一个可行的旅行计划,或者告诉他这不可能。

输入格式

输入包含多组测试用例。第一行包含一个整数 TT (1T2×1051 \le T \le 2 \times 10^5),表示测试用例的数量。

对于每组测试用例,第一行包含三个整数 n,m,sn, m, s ($1 \le n \le 2 \times 10^5, 0 \le m \le 2 \times 10^5, 1 \le s \le n$),其中 nn 为城市数量,mm 为道路数量,ss 为起始城市的编号。

接下来一行包含 nn 个整数 a1,a2,,ana_1, a_2, \cdots, a_n (0ai1090 \le a_i \le 10^9),表示 Dingdong 之前访问每座城市的次数。

接下来的 mm 行,每行包含两个整数 ui,viu_i, v_i (1ui,vin1 \le u_i, v_i \le n),表示一条连接城市 uiu_i 和城市 viv_i 的无向道路。可能存在重边和自环。 换句话说,保证 uiviu_i \ne v_i,也保证对于 iji \ne j(ui,vi)(uj,vj)(u_i, v_i) \ne (u_j, v_j)

保证所有测试用例的 nn 之和与 mm 之和分别不超过 2×1052 \times 10^5

输出格式

对于每组测试用例,如果不存在可行的旅行计划,则输出一行 No

否则,首先输出一行 Yes,然后在接下来的一行输出一个整数 kk (0k5n0 \le k \le 5n),表示本次旅行中访问城市的总次数。再接下来的一行,按顺序输出访问的城市的编号。

5
4 4 1
1 1 1 1
1 2
2 3
3 4
4 1
5 7 1
9 4 3 11 7
1 2
2 5
2 4
3 4
2 3
1 3
4 5
2 2 2
114 514
1 2
1 2
5 0 1
114 514 19 19 810
2 1 1
3 5
1 2
Yes
4
2 3 4 1
Yes
6
2 4 5 2 3 1
Yes
0

No
Yes
2
2 1

提示

对于第一个测试用例,按照路线 123411 \to 2 \to 3 \to 4 \to 1 访问后,城市 1,2,3,41, 2, 3, 4 分别被访问了 2,2,2,22, 2, 2, 2 次,满足要求。

翻译由 DeepSeek V4 Pro 完成