QOJ.ac

QOJ

时间限制: 1 s 内存限制: 2048 MB 总分: 100

#5487. 电影之夜

统计

你正在尝试组织一群朋友去看电影。这件事情变得很复杂,因为你的朋友们会根据其他人是否参加来决定自己是否参加。如果你给其中一位朋友打电话,你会进行如下对话:

你:“嘿 Fred,想和我们一起去看 7:30 场《来自意外二次方泻湖的编码恐怖》吗?”

Fred:“嗯,我不知道……Francine 会去吗?”

事实上,对于你的每一位朋友 $X$,都有且仅有一位朋友 $Y$,使得 $X$ 只有在 $Y$ 也参加的情况下才会参加。当然,你必须邀请朋友的一个子集,使得所有被邀请的人都知道还有谁被邀请,并且都愿意参加,同时没有未被邀请的人需要参加。

问题是,有多少种这样的朋友子集?你不想独自去看电影,所以每个集合必须至少包含一名朋友。

输入格式

第一行包含一个整数 $n$ ($2 \le n \le 10^5$)。这是你可能邀请去看电影的朋友数量。你用从 $1$ 到 $n$ 的数字来标识你的朋友。

接下来的 $n$ 行,每行包含一个整数 $y$ ($1 \le y \le n$)。这表示朋友 $x$ 只有在朋友 $y$ 也去电影院的情况下才会去,其中第一个 $y$ 值对应 $x=1$,第二个 $y$ 值对应 $x=2$,以此类推。没有人会是自己的朋友!(即 $x \neq y$)

输出格式

输出一个整数,表示你可以邀请的不同的非空朋友子集数量,使得所有被邀请的人都愿意参加。由于这个数字可能非常大,请输出其对 $10^9 + 7$ 取模的结果。

样例

样例输入 1

4
2
3
4
3

样例输出 1

3

样例输入 2

5
2
3
1
5
4

样例输出 2

3

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.