#P2081. 创世纪
创世纪
创世纪 (gen.pas/c/cpp) 题目描述 上帝手中有着 N种被称作“世界元 素”的东西,现在他要把它们中的一部分 投放到一个新的空间中去以建造世界。每 种世界元素都可以限制另外一种世界元 素,所以说上帝希望所有被投放的世界元 素都有至少一个没有被投放的世界元素 能够限制它,这样上帝就可以保持对世界 的控制。由于那个著名的有关于上帝能不 能制造一块连自己都不能举起的大石头的二律背反命题,我们知道上帝不是万能的,而且不 但不是万能的,他甚至有事情需要找你帮忙——上帝希望知道他最多可以投放多少种世界元 素,但是他只会 O(2N) 级别的算法。虽然上帝拥有无限多的时间,但是他也是个急性子。 你需要帮助上帝解决这个问题。 输入格式 第一行是一个整数 N,表示世界元素的数目。 第二行有 N个整数 A1, A2, …, AN。Ai表示第 i个世界元素能够限制的世界元素的编号。 输出格式 一个整数,表示最多可以投放的世界元素的数目。 样例输入 6 2 3 1 3 6 5 样例输出 3 样例说明 选择 2、3、5三个世界元素即可。分别有 1、4、6来限制它们。 数据范围与约定 对于 30% 的数据,N≤10。 对于 100% 的数据,N≤106,1≤Ai≤N,Ai≠i。