atcoder#CF17EXHIBITIONA. Awkward

Awkward

题目描述

ButCoder株式会社 は、プログラミングコンテストサイト「ButCoder」の開発や運営を主な事業とするスタートアップ企業です。

ButCoder社には社長を含めて N N 人の社員が在籍し、社長以外の各社員は直属の上司を一人だけ持ちます。各社員には 1 1 から N N までの重複しない社員番号が割り当てられており、社員番号 i i の社員は社員 i i と呼ばれます。社長は社員 1 1 であり、社員 i i (2 < = i < = N) (2\ <\ =\ i\ <\ =\ N) の直属の上司は社員 bi b_i (1 < = bi < i) (1\ <\ =\ b_i\ <\ i) です。

ButCoder社員一同の集合写真を撮影するべく、全社員がButCoder本社の大広間に集まりました。この大広間はとても広く、N N 人全員が横一列に並ぶことができます。しかし、彼らはどのような順番で並ぶかを決めかねています。どういうわけか、彼らは社長以外みな、自分の直属の上司と隣り合って並ぶことを避けたいようです。

N N 人の社員の並び方であって、彼らの希望を満たすものは何通り存在するでしょうか?その個数を 109+7 10^9+7 で割ったあまりを求めてください。

输入格式

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

N N b2 b_2 b3 b_3 : : bN b_N

输出格式

N N 人の社員の並び方であって、社長を除くどの社員も自分の直属の上司と隣り合わないようなものの個数を 109+7 10^9+7 で割ったあまりを出力せよ。

4
1
2
3
2
3
1
2
0
5
1
1
3
3
8
15
1
2
3
1
4
2
7
1
8
2
8
1
8
2
97193524

提示

制約

  • 2 < = N < = 2000 2\ <\ =\ N\ <\ =\ 2000
  • 1 < = bi < i 1\ <\ =\ b_i\ <\ i (2 < = i < = N) (2\ <\ =\ i\ <\ =\ N)

Sample Explanation 1

以下、社員 A A が社員 B B の直属の上司であることを A  B A\ →\ B と表記します。 このケースでは、社員の主従関係は 1  2  3  4 1\ →\ 2\ →\ 3\ →\ 4 となっています。以下の 2 2 通りの並び方が全社員の希望を満たします。 - 2, 4, 1, 3 2,\ 4,\ 1,\ 3 - 3, 1, 4, 2 3,\ 1,\ 4,\ 2 なお、後者は前者を左右に反転したものですが、これらは個別に数えます。

Sample Explanation 2

社員の主従関係は 1  2  3 1\ →\ 2\ →\ 3 となっています。3 3 人の社員がどのように並んでも、社員 2 2 , 3 3 の希望のうち少なくとも一方に反するため、答えは 0 0 通りです。

Sample Explanation 3

社員の主従関係は次の図のようになっています。 ![](https://img.atcoder.jp/cf17-exhibition/88bc845e074e0a3fecd96e2db9f3b1a5.png) 以下の 8 8 通りの並び方が全社員の希望を満たします。 - 1, 4, 5, 2, 3 1,\ 4,\ 5,\ 2,\ 3 - 1, 5, 4, 2, 3 1,\ 5,\ 4,\ 2,\ 3 - 3, 2, 4, 1, 5 3,\ 2,\ 4,\ 1,\ 5 - 3, 2, 4, 5, 1 3,\ 2,\ 4,\ 5,\ 1 - 3, 2, 5, 1, 4 3,\ 2,\ 5,\ 1,\ 4 - 3, 2, 5, 4, 1 3,\ 2,\ 5,\ 4,\ 1 - 4, 1, 5, 2, 3 4,\ 1,\ 5,\ 2,\ 3 - 5, 1, 4, 2, 3 5,\ 1,\ 4,\ 2,\ 3