题目描述
この問題では,順列と言った際には (1,2,⋯,N) の順列を指すものとします.
順列 a=(a1,a2,⋯,aN) に対し,f(a) を a のサイクルの個数と定義します. より正確には,f(a) の値は次のように定義されます.
- 1 から N までの番号のついた N 頂点からなる無向グラフを考える. そして,各 1 ≤ i ≤ N について,頂点 i と頂点 ai 間を結ぶ辺を追加する. このときのグラフの連結成分の個数を f(a) とする.
順列 P=(P1,P2,⋯,PN) および整数 K が与えられます. 次の条件を満たす順列 x が存在するかどうか判定し,存在するなら一つ構築してください.
- yi=Pxi として,順列 y を定める.
- この時,f(x)+f(y)=K である.
1 つの入力ファイルにつき,T 個のテストケースを解いてください.
输入格式
入力は以下の形式で標準入力から与えられる.
T case1 case2 ⋮ caseT
各ケースは以下の形式で与えられる.
N K P1 P2 ⋯ PN
输出格式
各ケースに対し,条件を満たす順列 x が存在しない場合は No
と,存在する場合は以下の形式で答えを出力せよ.
Yes x1 x2 ⋯ xN
Yes
, No
を出力する際,各文字は英大文字・小文字のいずれでもよい. 解が複数存在する場合,どれを出力しても正解とみなされる.
题目大意
对于一个 1 ~ n 的排列 a ,设 f(a) 表示 a 的环数。
给定 n , m 和一个排列 a ,称一个排列 b 是好的当且仅当它满足下列条件:
- 设排列 c 满足 ci=abi ,那么 f(b)+f(c)=m 。
你需要构造一个好的排列 b 或输出无解。
n≤2×105 。
3
3 3
1 3 2
2 2
2 1
4 8
1 2 3 4
Yes
2 1 3
No
Yes
1 2 3 4
提示
制約
- 1 ≤ T ≤ 105
- 2 ≤ N ≤ 2 × 105
- 2 ≤ K ≤ 2N
- (P1,P2,⋯,PN) は (1,2,⋯,N) の順列
- 1 つの入力ファイルにつき,N の総和は 2 × 105 を超えない
- 入力される数はすべて整数
Sample Explanation 1
1 つめのケースでは,x=(2,1,3) とすれば y=(3,1,2) となり,f(x)+f(y)=2+1=3 となります.