atcoder#ARC114B. [ARC114B] Special Subsets

[ARC114B] Special Subsets

配点 : 400400

問題文

11 以上 NN 以下の整数すべてから成る集合を SS とします.

ffSS から SS への関数であり,f(1),f(2),,f(N)f(1), f(2), \cdots, f(N) の値が f1,f2,,fNf_1, f_2, \cdots, f_N として与えられます.

SS の空でない部分集合 TT であって,次の両方の条件を満たすものの個数を 998244353998244353 で割った余りを求めてください.

  • 全ての aTa \in T について f(a)Tf(a) \in T である.
  • 全ての a,bTa, b \in T について aba \neq b ならば f(a)f(b)f(a) \neq f(b) である.

制約

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1fiN1 \leq f_i \leq N
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる.

NN

f1f_1 f2f_2 \ldots fNf_N

出力

SS の空でない部分集合であって,両方の条件を満たすものの個数を 998244353998244353 で割った余りを出力せよ.

2
2 1
1

f(1)=2,f(2)=1f(1) = 2, f(2) = 1 です.f(1)f(2)f(1) \neq f(2) であるため条件の 22 つ目は常に満たしますが,11 つ目の条件より 1,21, 2 は同時に TT に入っている必要があります.

2
1 1
1

f(1)=f(2)=1f(1) = f(2) = 1 です.11 つ目の条件のため 11TT に属する必要があり,さらに 22 つ目の条件により 22TT に属することはできません.

3
1 2 3
7

f(1)=1,f(2)=2,f(3)=3f(1) = 1, f(2) = 2, f(3) = 3 です.11 つ目の条件も 22 つ目の条件も常に満たされるため,SS の空でない部分集合全てが条件を満たします.