atcoder#NOMURA2020D. Urban Planning

Urban Planning

题目描述

1, 2, , N 1,\ 2,\ \cdots,\ N の番号がついた N N 個の町があります。

現在、2 2 つの相異なる町を双方向に結ぶ道をいくつか作ることが計画されています。現時点では、町を結ぶ道はありません。

この計画において、各町は他の町を 1 1 つ選んで、道を 1 1 本以上使ってその町に移動できるように要請します。

N N 個の町の要請は配列 P1, P2, , PN P_1,\ P_2,\ \cdots,\ P_N で表され、町 i i の要請は、Pi = 1 P_i\ =\ -1 のときまだ決定されていないこと、1  Pi  N 1\ \leq\ P_i\ \leq\ N であるとき町 Pi P_i を選んだことを表します。

Pi = 1 P_i\ =\ -1 である町の個数を K K 個としたとき、全体では (N1)K (N-1)^K 通りの要請方法が考えられます。それぞれの要請方法について、すべての町の要請を満たすために作る必要がある道の本数の最小値を求め、その総和を 109+7 10^9+7 で割った余りを出力してください。

输入格式

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

N N P1 P_1 P2 P_2 \cdots PN P_N

输出格式

それぞれの要請方法について、すべての町の要請を満たすために作る必要がある道の本数の最小値を求め、その総和を 109+7 10^9+7 で割った余りを出力せよ。

4
2 1 -1 3
8
2
2 1
1
10
2 6 9 -1 6 9 -1 -1 -1 -1
527841

提示

制約

  • 2  N  5000 2\ \leq\ N\ \leq\ 5000
  • Pi = 1 P_i\ =\ -1 または 1  Pi  N 1\ \leq\ P_i\ \leq\ N
  • Pi  i P_i\ \neq\ i
  • 入力は全て整数である

Sample Explanation 1

要請方法としては次の 3 3 通りがあります。 - P1 = 2, P2 = 1, P3 = 1, P4 = 3 P_1\ =\ 2,\ P_2\ =\ 1,\ P_3\ =\ 1,\ P_4\ =\ 3 とする。このとき、例えば道 (1,2),(1,3),(3,4) (1,2),(1,3),(3,4) 3 3 つを作ることですべての町の要請を満たすことができ、これが最小です。 - P1 = 2, P2 = 1, P3 = 2, P4 = 3 P_1\ =\ 2,\ P_2\ =\ 1,\ P_3\ =\ 2,\ P_4\ =\ 3 とする。このとき、例えば道 (1,2),(1,3),(3,4) (1,2),(1,3),(3,4) 3 3 つを作ることですべての町の要請を満たすことができ、これが最小です。 - P1 = 2, P2 = 1, P3 = 4, P4 = 3 P_1\ =\ 2,\ P_2\ =\ 1,\ P_3\ =\ 4,\ P_4\ =\ 3 とする。このとき、例えば道 (1,2),(3,4) (1,2),(3,4) 2 2 つを作ることですべての町の要請を満たすことができ、これが最小です。 必ずしも町 i i と町 Pi P_i が直接繋がっている必要がないことに注意してください。 よって、総和は 8 8 です。

Sample Explanation 2

初めから要請が 1 1 通りに決まっている場合もあります。