#D0965. 队伍配对

队伍配对

题目描述

33DAI 在给一项赛事排赛程。共有 nn 支队伍(编号 11 到 nn),要安排恰好 mm 场比赛,每场比赛由两支不同的队伍进行;同一对队伍之间最多打一场比赛。

赛事主办方给 33DAI 的要求是:第 ii 支队恰好要打 did_i 场比赛。

请你给出一种满足要求的赛程安排;如果不存在这样的安排,输出 No。

本题的答案不唯一,只要给出任意一种满足要求的安排都算正确。

输入格式

输入的第一行是一个整数 tt,表示测试用例组数。

接下来依次给出 tt 组测试用例,每组测试用例的格式为:

  • 第一行两个整数 n,mn, m;
  • 第二行 nn 个整数 d1,d2,…,dnd_1, d_2, \dots, d_n。

输出格式

对每组测试用例:

  • 若存在满足要求的安排,输出 Yes,随后 mm 行,每行两个整数 u,vu, v(1≤u,v≤n1 \le u, v \le n,u≠vu \ne v),表示安排一场 uu 队与 vv 队的比赛;
  • 若不存在这样的安排,输出一行 No。

特别地,当 m=0m = 0 时也请输出 No(此时没有任何比赛可以列出来,用 No 表示"不需要安排")。

3
3 3
2 2 2
4 2
1 1 1 1
3 1
0 1 2
Yes
1 2
1 3
2 3
Yes
1 2
3 4
No

样例 1 解释

第 1 组:n=3n = 3、m=3m = 3、d=(2,2,2)d = (2, 2, 2)。样例安排了三场比赛 1 2、1 3、2 3:每支队都打了 22 场,三场比赛的对阵互不相同,也都没有自己和自己打,满足要求。

第 2 组:n=4n = 4、m=2m = 2、d=(1,1,1,1)d = (1, 1, 1, 1)。样例安排 1 2 与 3 4:四支队各打 11 场,满足要求。

第 3 组:n=3n = 3、m=1m = 1、d=(0,1,2)d = (0, 1, 2)。dd 的总和是 0+1+2=30 + 1 + 2 = 3,可是 m=1m = 1 场比赛只会贡献 2×1=22 \times 1 = 2 个"出场次数",总和对不上,所以不存在满足要求的安排,输出 No。

样例 2

见 teams2.in 与 teams2.ans。

样例 3

见 teams3.in 与 teams3.ans。

数据范围

对于所有测试数据,保证:

  • 1≤t≤1001 \le t \le 100;
  • 1≤n≤10001 \le n \le 1000;
  • 0≤m≤5×1050 \le m \le 5 \times 10^5,0≤di≤10000 \le d_i \le 1000;
  • 所有测试用例的 mm 之和不超过 5×1055 \times 10^5。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 n≤5n \le 5 且 m≤5m \le 5
7∼127 \sim 12 n≤50n \le 50 且 m≤200m \le 200
13∼2013 \sim 20 4040 无额外限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。