#arc140d. [arc140_d]One to One

[arc140_d]One to One

题目描述

给定一个长度为NN的整数序列X=(X1,X2,dots,XN)X=(X_1,X_2,\\dots,X_N),其中XiX_i的取值范围为11NN(包含11NN),考虑下面的问题,并定义f(X)f(X)为其答案。

给定一个无向图GG,它有NN个顶点(可能存在多重边和自环)。GGNN条边,其中第ii条边连接了顶点ii和顶点XiX_i。请计算GG中的连通分量数量。

给定一个长度为NN的整数序列A=(A1,A2,dots,AN)A=(A_1,A_2,\\dots,A_N),其中每个AiA_i是介于11NN(包含11NN)之间的整数或1-1

考虑一个长度为NN的整数序列X=(X1,X2,dots,XN)X=(X_1,X_2,\\dots,X_N),其中XiX_i的取值范围为11NN,满足Aineq1RightarrowAi=XiA_i \\neq -1 \\Rightarrow A_i = X_i。计算所有满足条件的XXf(X)f(X)之和,并对998244353998244353进行取模。

约束条件

  • 1leqNleq20001 \\leq N \\leq 2000
  • AiA_i是介于11NN(包含11NN)之间的整数或1-1
  • 输入中的所有值均为整数。

输入

输入以标准格式给出,格式如下:

NN A1A_1 A2A_2 dots\\dots ANA_N

输出

输出答案。

示例输入1

3
-1 1 3

示例输出1

5

满足条件的XX有三个,如下所示。

  • X=(1,1,3)X=(1,1,3),对应问题的答案为22
  • X=(2,1,3)X=(2,1,3),对应问题的答案为22
  • X=(3,1,3)X=(3,1,3),对应问题的答案为11

所以答案为2+2+1=52+2+1=5

示例输入2

1
1

示例输出2

1

示例输入3

8
-1 3 -1 -1 8 -1 -1 -1

示例输出3

433760