#P7951. [✗✓OI R1] 右方之火

[✗✓OI R1] 右方之火

背景

「区区二十亿,区区两千年,根本就不够。」
「本大爷所拥有的力量可比你想象的还多哦。」

你打不过右方之火。
但是为了证明你的想象力很丰富,你要做一道构造题。

题目描述

你有一个 nn 个点 mm 条边的无向连通图,每个点有一个初始权值 aia_i 以及一个目标权值 bib_i。现在你可以对这张图进行这样的操作:

  • 选择一个整数 cc,需要满足 ∣c∣≤1018|c| \le 10^{18};
  • 选一条点数为 33,边数为 22 的链;
  • 使得中间点的权值减去 2c2c,另外两个点的权值各加上 cc。

问是否可以进行若干次操作使得最后每个点的权值都为 bib_i。如果可以,你需要输出方案,操作次数不能超过 4n4n。

注意 cc 可以为负数。

输入格式

本题有多组测试数据。

第一行一个正整数 TT ,表示测试数据的数量。
对于每组数据,第一行两个正整数 n,mn,m,分别表示点数和边数。
接下来两行,每行各 nn 个正整数,表示初始权值 aia_i 和目标权值 bib_i。
接下来 mm 行,每行两个整数 u,vu,v,表示 uu 号点和 vv 号点之间有一条边,保证图连通,没有自环和重边。

输出格式

对于每组数据,第一行输出一个字符串,若能够从初始权值变为目标权值,输出 Yes ,否则输出 No。输出 Yes 和 No 的这一行不要有其他奇怪的字符,不然可能会被 checker 判成错误。
第二行输出一个整数 k(k≤4n)k(k\le4n),表示构造方案共有 kk 步。
接下来 kk 行,每行四个整数 x,y,z,cx,y,z,c 满足 1≤x,y,z≤n1 \le x,y,z \le n,∣c∣≤1018|c| \le 10^{18},(x,y),(y,z)∈E(x,y),(y,z)\in E,表示 ax←ax+c,ay←ay−2c,az←az+ca_x \gets a_x+c,a_y \gets a_y-2c,a_z \gets a_z+c。

本题采用 Special Judge。如果有多种答案,输出任意一种即可。

3
7 6
8 6 0 6 1 1 10 
5 6 2 9 1 2 7 
1 2
2 3
3 4
4 5
5 6
6 7
7 6
8 6 0 6 1 0 11 
5 6 2 9 1 2 7 
1 2
2 3
3 4
4 5
5 6
6 7
7 6
8 6 0 6 1 1 10 
5 6 2 9 1 2 6 
1 2
2 3
3 4
4 5
5 6
6 7
Yes
5
7 6 5 -3
6 5 4 -5
5 4 3 -7
4 3 2 -6
3 2 1 -3
No
No

2
6 6
10 -3 4 21 -2 11 
4 4 8 8 8 9 
1 2
2 3
3 4
4 5
5 6
6 1
6 6
10 -3 4 21 -2 11 
4 4 8 8 9 8 
1 2
2 3
3 4
4 5
5 6
6 1
Yes
6
6 1 2 6
1 2 3 1
2 3 4 3
3 4 5 9
4 5 6 2
5 6 1 5
No

1
6 9
7 5 68 16 2 45
42 11 42 17 14 17
1 3
1 4
1 6
1 5
1 2
2 5
2 3
4 6
5 6
Yes
10
1 4 6 1
1 6 4 -6
2 1 4 -9
1 3 2 -17
5 1 4 25
2 1 6 32
1 6 5 33
4 1 3 39
4 6 5 -46
3 1 6 -99

提示

本题采用多组测试数据,子任务评测。

对于 100%100\% 的数据,满足 1≤T≤5×1041\le T \leq 5 \times 10^4,3≤n≤5×1053 \le n \le 5 \times 10^5,n−1≤m≤5×105n-1 \le m \le 5 \times 10^5,∑n,∑m≤5×105\sum n,\sum m \leq 5\times 10^5,∣ai∣,∣bi∣≤107|a_i|,|b_i| \leq 10^7。

subtask n,m,Tn,m,T 特殊性质 分数
1 n,m≤20n,m\le 20,T≤5T \le 5 无 10
2 m=n−1m=n-1 保证第 ii 条边连接 ii 和 (i+1)(i+1) 号点 5
3 保证第 ii 条边连接 11 和 (i+1)(i+1) 号点
4 无 10
5 m=nm=n 保证图是一个环
6 n,m≤200,T≤5n,m\le 200,T \le 5 无
7 n,m≤2000,T≤5 n,m\le 2000,T \le 5 20
8 30

温馨提示:对于部分数据点 T≤5T \le 5 因此数据比较难造,看到只 WA 了少数几个点并不代表你的算法没有问题,请仔细思考算法的正确性。