#P13092. [AGC060E] Number of Cycles

    ID: 12276 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>CF3000构造数学贪心图论组合数学

[AGC060E] Number of Cycles

题目描述

在本题中,提到“顺序”时,指的是 (1,2,,N) (1,2,\cdots,N) 的一个排列。

对于一个排列 a=(a1,a2,,aN) a=(a_1,a_2,\cdots,a_N) ,定义 f(a) f(a) a a 的循环节(cycle)的个数。更准确地说,f(a) f(a) 的值定义如下:

  • 考虑一个有 N N 个顶点、编号为 1 1 N N 的无向图。对于每个 1iN 1\leq i\leq N ,在顶点 i i 和顶点 ai a_i 之间连一条边。此时,该图的连通分量个数即为 f(a) f(a)

给定一个排列 P=(P1,P2,,PN) P=(P_1,P_2,\cdots,P_N) 和一个整数 K K 。判断是否存在一个排列 x x ,使得下列条件成立,并在存在时构造出一个解:

  • yi=Pxi y_i=P_{x_i} ,从而得到排列 y y
  • 满足 f(x)+f(y)=K f(x)+f(y)=K

对于每个输入文件,需要解答 T T 个测试用例。

输入格式

输入以如下格式从标准输入读入:

T T
case1 case_1
case2 case_2
\vdots
caseT case_T

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

N N K K P1 P_1 P2 P_2 \cdots PN P_N

输出格式

对于每个测试用例,如果不存在满足条件的排列 x x ,输出 No。如果存在,输出如下格式的答案:

Yes x1 x_1 x2 x_2 \cdots xN x_N

输出 YesNo 时,字母大小写均可。若存在多个解,输出任意一个均可。

输入输出样例 #1

输入 #1

3
3 3
1 3 2
2 2
2 1
4 8
1 2 3 4

输出 #1

Yes
2 1 3
No
Yes
1 2 3 4

说明/提示

数据范围

  • 1T105 1\leq T\leq 10^5
  • 2N2×105 2\leq N\leq 2\times 10^5
  • 2K2N 2\leq K\leq 2N
  • (P1,P2,,PN) (P_1,P_2,\cdots,P_N) (1,2,,N) (1,2,\cdots,N) 的一个排列
  • 每个输入文件中所有 N N 的总和不超过 2×105 2\times 10^5
  • 输入的所有数均为整数

样例解释 1

在第 1 1 个测试用例中,取 x=(2,1,3) x=(2,1,3) ,则 y=(3,1,2) y=(3,1,2) ,此时 f(x)+f(y)=2+1=3 f(x)+f(y)=2+1=3