深度关注:拓扑排序:有向无环图的排队艺术 - _wyt001

文章目录

深度关注:拓扑排序:有向无环图的排队艺术 - _wyt001

做番茄炒蛋: 科技新闻。

【补充说明】

节点3的入度为: 2

深度背景与起因

一行一个整数,为最大食物链数量模上 \(80112002\) 的结果。

先洗番茄,再切番茄

你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧。

深度事件经过

节点5的入度为: 2

洛谷P1807 最长路

洛谷B3644 【模板】拓扑排序 / 家谱树

深度各方回应

此时队列q为空,答案为队列ans

切番茄和搅拌蛋液可以同时准备

第一行,两个正整数 \(n\)、\(m\),表示生物种类 \(n\) 和吃与被吃的关系数 \(m\)。

深度影响分析

状态定义:\(dp[i]\) 表示到达节点\(i\)的路径数

节点1的入度为: 2

2 → 4 → 5 → 3 → 1

接下来 \(m\) 行,每行两个正整数,透露被吃的生物 A 和吃 A 的生物 B。

先打蛋,再搅拌蛋液

重复步骤2,直到队列q为空:

例子:

洛谷P1137 旅行计划

节点4的入度为: 1

洗番茄 → 切番茄 → 打蛋 → 搅拌蛋液 → 下锅翻炒

洛谷P4017 最大食物链计数

在图中找出入度为0的节点,放入q队列:

各测试点满足以下约定:

作用:对有向无环图的所有顶点进行排序

(这里的“最大食物链”,指的是生物学意义上的食物链,即最左端是不会捕食其他生物的生产者,最右端是不会被其他生物捕食的消费者。)

将队列的第一个数放入答案队列的末尾,并将此节点指向的所有节点入度减一,并将入度为0的节点加入队列(不重复入队):

数据中不会出现环,满足生物学的要求。(感谢 @AKEE)

通过简单的推理,我们可以发现,这个有向无环图中的一种合理顺序为:

状态转移方程:\(dp[i]=所有指向i节点的路径数量总和\)

洛谷P1113 [USACO02FEB] 杂务

对于 \(100\%\) 的数据,\(1 \le n \le 5\times 10^3,1\le m \le 5\times 10^5\)

拓扑排序+dp

节点2的入度为: 0

由于这个结果可能过大,你只需要输出总数模上 \(80112002\) 的结果。

拓扑排序就能给我们提供一种合理的顺序,如:

对于上面的例子,我们可以检测每个节点的入度(即有多少个节点指向此节点):

排序标准:假如\(A\)节点指向\(B\)节点,那么\(A\)节点一定排在\(B\)节点之前

Delia 非常急,所以你只有 \(1\) 秒的时候。

初始化:将所有入度为0的点标记为1

给你一个食物网,你要求出这个食物网中最大食物链的数量。

都准备好之后,才能下锅炒

洛谷P3074 [USACO13FEB] Milk Scheduling S

洛谷P3183 [HAOI2016] 食物链,相关情况值得关注。

声明:本文信息来源于相关渠道或网络,版权归原作者所有。如涉及版权问题请及时与本站联系删除。本文观点仅供参考,不代表本站立场。
天枢新闻网
天枢新闻网资深内容创作者,致力于为广大读者提供及时、准确、深度的新闻资讯与行业分析。
领域:科技 发布:2026-08-02