#P13862. [nomura2020]Urban Planning

    ID: 13063 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 7 上传者: 标签>CF2200图论组合数学动态规划DFS强连通分量

[nomura2020]Urban Planning

题目描述

NN 个编号为 1,2,,N1, 2, \cdots, N 的城镇。

现在计划修建若干条双向道路,每条道路连接两个不同的城镇。目前,城镇之间还没有任何道路。

在这个计划中,每个城镇都要求选择另一个城镇,并且希望能够通过一条或多条道路到达所选的城镇。

NN 个城镇的要求用数组 P1,P2,,PNP_1, P_2, \cdots, P_N 表示。对于城镇 ii,如果 Pi=1P_i = -1,表示尚未决定要到达哪个城镇;如果 1PiN1 \leq P_i \leq N,则表示选择了城镇 PiP_i 作为目标。

Pi=1P_i = -1 的城镇有 KK 个,则总共有 (N1)K(N-1)^K 种不同的要求方式。对于每一种要求方式,求出满足所有城镇要求所需修建道路数的最小值,并将这些最小值的总和对 109+710^9+7 取模后输出。

输入格式

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

NN P1P_1 P2P_2 \cdots PNP_N

输出格式

对于每一种要求方式,求出满足所有城镇要求所需修建道路数的最小值,将这些最小值的总和对 109+710^9+7 取模后输出。

输入输出样例 #1

输入 #1

4
2 1 -1 3

输出 #1

8

输入输出样例 #2

输入 #2

2
2 1

输出 #2

1

输入输出样例 #3

输入 #3

10
2 6 9 -1 6 9 -1 -1 -1 -1

输出 #3

527841

说明/提示

限制条件

  • 2N50002 \leq N \leq 5000
  • Pi=1P_i = -11PiN1 \leq P_i \leq N
  • PiiP_i \neq i
  • 所有输入均为整数

样例解释 1

存在如下 33 种要求方式:

  • P1=2,P2=1,P3=1,P4=3P_1=2, P_2=1, P_3=1, P_4=3。此时,例如修建道路 (1,2),(1,3),(3,4)(1,2), (1,3), (3,4)33 条,可以满足所有城镇的要求,并且这是最小值。
  • P1=2,P2=1,P3=2,P4=3P_1=2, P_2=1, P_3=2, P_4=3。此时,例如修建道路 (1,2),(1,3),(3,4)(1,2), (1,3), (3,4)33 条,可以满足所有城镇的要求,并且这是最小值。
  • P1=2,P2=1,P3=4,P4=3P_1=2, P_2=1, P_3=4, P_4=3。此时,例如修建道路 (1,2),(3,4)(1,2), (3,4)22 条,可以满足所有城镇的要求,并且这是最小值。

注意,并不一定需要直接连接城镇 iiPiP_i

因此,总和为 88

样例解释 2

有时一开始所有要求就已经确定,只存在 11 种方式。