#P13862. [nomura2020]Urban Planning
[nomura2020]Urban Planning
题目描述
有 个编号为 的城镇。
现在计划修建若干条双向道路,每条道路连接两个不同的城镇。目前,城镇之间还没有任何道路。
在这个计划中,每个城镇都要求选择另一个城镇,并且希望能够通过一条或多条道路到达所选的城镇。
个城镇的要求用数组 表示。对于城镇 ,如果 ,表示尚未决定要到达哪个城镇;如果 ,则表示选择了城镇 作为目标。
设 的城镇有 个,则总共有 种不同的要求方式。对于每一种要求方式,求出满足所有城镇要求所需修建道路数的最小值,并将这些最小值的总和对 取模后输出。
输入格式
输入通过标准输入给出,格式如下:
输出格式
对于每一种要求方式,求出满足所有城镇要求所需修建道路数的最小值,将这些最小值的总和对 取模后输出。
输入输出样例 #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
说明/提示
限制条件
- 或
- 所有输入均为整数
样例解释 1
存在如下 种要求方式:
- 。此时,例如修建道路 共 条,可以满足所有城镇的要求,并且这是最小值。
- 。此时,例如修建道路 共 条,可以满足所有城镇的要求,并且这是最小值。
- 。此时,例如修建道路 共 条,可以满足所有城镇的要求,并且这是最小值。
注意,并不一定需要直接连接城镇 和 。
因此,总和为 。
样例解释 2
有时一开始所有要求就已经确定,只存在 种方式。