版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
title: "题解 - [Luogu P3183] [HAOI2016] 食物链" categories:
如图所示为某生态系统的食物网示意图, 据图回答第 1 小题
现在给你 $n$ 个物种和 $m$ 条能量流动关系, 求其中的食物链条数.
物种的名称为从 $1$ 到 $n$ 编号
$m$ 条能量流动关系形如 $a_1\to b_1, a_2\to b_2, a_3\to b3, ..., a{m-1}\to b_{m-1}, a_m\to b_m$ 其中 $a_i\to b_i$ 表示能量从物种 $a_i$ 流向物种 $b_i$
注意单独的一种孤立生物不算一条食物链
第一行两个整数 $n$ 和 $m$
接下来 $m$ 行, 每行两个整数 $a_i$, $b_i$, 描述 $m$ 条能量流动关系.
数据保证输入数据符号生物学特点, 且不会有重复的能量流动关系出现
$1\leqslant n\leqslant 100000, 0\leqslant m\leqslant 200000$
一个整数, 即食物网中的食物链条数
10 16
1 2
1 4
1 10
2 3
2 5
4 3
4 5
4 8
6 5
7 6
7 9
8 5
9 8
10 6
10 7
10 9
9
很显然就是一 dfs
从入度为 $0$ 的点开始, 每一个点对应的食物链条数是所有出度的食物链条数之和, 出度为 $0$ 的点食物链条数为 $1$
注意所有点不一定连通 (当时漏看这个直接 20pts)
但是直接暴搜肯定不行, 需要记忆化
$O(m+n)$