1 条题解
-
0
题目理解
这是一个食物网,物种编号 到 ,能量流动关系 表示 被 捕食(能量从 流向 )。
食物链的定义:从某个生产者(没有捕食者,即入度为 0)开始,到某个顶级消费者(没有猎物,即出度为 0)结束的一条路径。
注意:单独一个孤立生物不算一条食物链。
题目要求计算所有不同的食物链条数。
算法思路
-
建模
将食物网看作一个有向图, 表示 是 的食物(能量从 流向 )。
在生态学中,这意味着 捕食 ,所以图中箭头方向是“被捕食者 → 捕食者”。 -
起点与终点
- 起点:生产者(入度 = 0 的节点)
- 终点:顶级消费者(出度 = 0 的节点)
-
统计路径数
我们可以用动态规划(DP) 来做:
设 表示从某个生产者开始,到达节点 的路径条数。
初始时,对于每个生产者 ,。
然后按拓扑排序的顺序更新:最终答案是所有顶级消费者(出度 = 0)的 值之和。
-
注意
- 单独一个节点(既是生产者又是顶级消费者)不算一条食物链,所以这种情况不计入答案。
- 题目保证输入符合生物学特点,所以不会出现环。
复杂度分析
- 拓扑排序:
- 空间复杂度:
-
- 1
信息
- ID
- 3131
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者