#E0028. 游戏
游戏
题目描述
小明在玩一个游戏。
游戏中有 个房间,编号从 到 。
初始的时候所有的房间都是用锁锁住的。
使用万能钥匙可以打开任意一个房间的锁,但是一把万能钥匙只能使用一次。一旦使用一把万能钥匙打开一个房间的门锁,这把万能钥匙将会报废,从而无法继续使用。
每个房间都有一个传送门,我们用 表示传送门的信息,它表示只要你进入了第 个房间,就能够从第 个房间直接传送到第 个房间,而不需要打开第 个房间的门锁。
注意:这种传输是单向的,这就是说,当 时,使用第 个房间的传送门,你只能从第 个房间传送到第 个房间,而不能使用这个传送门从第 个房间传送回第 个房间。
也是有可能的,此时你从 个房间的传送门出发,回到的还是第 个房间。
同时,本题保证 是一个 到 的排列,这也就是说整数 到 在数列 中均只出现了 次。 这是一个很重要的信息,它或许能够为你解决这道问题带来很大的帮助。
你需要购买最少数量的万能钥匙,使得你能够进入所有的房间。
求:最少需要购买的万能钥匙的数量?
输入格式
第一行,一个整数 ,表示游戏中的房间数。
第二行, 个整数 。
输出格式
输出一个整数,表示满足每个房间都能够进入的情况下所需购买的最少的万能钥匙的数量。
5
1 2 3 4 5
5
6
2 3 4 5 6 1
1
6
4 6 2 1 5 3
3
说明/提示
样例解释
- 样例1:每个房间的传送门都是传送到自己的,所以你必须购买 把万能钥匙,并使用万能钥匙打开每一个门;
- 样例2:一种最优方案是:购买一把万能钥匙打开第 个房间的门,然后就可以按照 的顺序使用传送门达到其余每一个房间;
- 样例3:一种最优方案是,购买 把万能钥匙,然后使用第 把万能钥匙打开第一个房间的门,然后按照 的顺序到达第 个房间再返回第 个房间;然后从第 个房间出来,再使用第 把万能钥匙打开第 个房间的门,然后按照 的顺序一次到达第 个房间再返回第 个房间;最后使用第 把万能钥匙打开第 个房间的门。
数据规模与约定
- 对于 的数据,
- 对于 的数据,
- 对于 的数据,