首先 ,要知道这道题是 TopoTopo 拓扑排序。不妨先从拓扑排序定义下手,分析题目的性质。经分析得:
食物链中的生物 —— 节点
生物之间的关系 —— 有向边
为了方便描述,我们将
不会捕食其他生物的 生产者 叫做 最佳生产者
不会被其他生物捕食的 消费者 叫做 最佳消费者
由于数据中不会出现环,所以 最大食物链 即 左端是 最佳生产者 ,右端是 最佳消费者 的路径
而 只要最左端是 最佳生产者 的路径(即最右端可以不是 最佳消费者 的最大食物链) 我们称之为 类食物链
既然 食物链中的生物 可以看成 节点,那么 最佳生产者 的入度一定为 0, 而 最佳消费者 的出度也为 0。
想要找到一条 最大食物链 ,那么这条路径的 起点 入度要为0,终点 出度要为0。
故:既要记录入度,还要记录出度!
现在的问题转换成了,如何找到图中所有 左端点入度为0 且 右端点出度为0 的路径的数量
我们拿起笔,在草稿纸上画一个图进行推算。接下来将使用 样例 进行举例。
(将 最佳生产者 涂上 蓝色,最佳消费者 涂上 红色)