AT_nomura2020_d.Urban Planning
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有 N 个编号为 1,2,⋯,N 的城镇。
现在计划修建若干条双向道路,每条道路连接两个不同的城镇。目前,城镇之间还没有任何道路。
在这个计划中,每个城镇都要求选择另一个城镇,并且希望能够通过一条或多条道路到达所选的城镇。
N 个城镇的要求用数组 P1,P2,⋯,PN 表示。对于城镇 i,如果 Pi=−1,表示尚未决定要到达哪个城镇;如果 1≤Pi≤N,则表示选择了城镇 Pi 作为目标。
设 Pi=−1 的城镇有 K 个,则总共有 (N−1)K 种不同的要求方式。对于每一种要求方式,求出满足所有城镇要求所需修建道路数的最小值,并将这些最小值的总和对 109+7 取模后输出。
输入格式
输入通过标准输入给出,格式如下:
N P1 P2 ⋯ PN
输出格式
对于每一种要求方式,求出满足所有城镇要求所需修建道路数的最小值,将这些最小值的总和对 109+7 取模后输出。
输入输出样例
输入#1
4 2 1 -1 3
输出#1
8
输入#2
2 2 1
输出#2
1
输入#3
10 2 6 9 -1 6 9 -1 -1 -1 -1
输出#3
527841
说明/提示
限制条件
- 2≤N≤5000
- Pi=−1 或 1≤Pi≤N
- Pi=i
- 所有输入均为整数
样例解释 1
存在如下 3 种要求方式:
- P1=2,P2=1,P3=1,P4=3。此时,例如修建道路 (1,2),(1,3),(3,4) 共 3 条,可以满足所有城镇的要求,并且这是最小值。
- P1=2,P2=1,P3=2,P4=3。此时,例如修建道路 (1,2),(1,3),(3,4) 共 3 条,可以满足所有城镇的要求,并且这是最小值。
- P1=2,P2=1,P3=4,P4=3。此时,例如修建道路 (1,2),(3,4) 共 2 条,可以满足所有城镇的要求,并且这是最小值。
注意,并不一定需要直接连接城镇 i 和 Pi。
因此,总和为 8。
样例解释 2
有时一开始所有要求就已经确定,只存在 1 种方式。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?