QOJ.ac

QOJ

حد الوقت: 3.0 s حد الذاكرة: 128 MB مجموع النقاط: 100 قابلة للهجوم ✓

#16918. 营养平衡物种

الإحصائيات

在一项跨学科合作中,一位生态系统科学家和一位计算机科学家联手,利用计算方法分析复杂生态系统的结构。生态系统科学家将生态系统建模为一个有向图 $D = (V, A)$,其中每个物种由一个节点 $v \in V$ 表示,每个捕食关系由一条从猎物 $x$ 指向捕食者 $y$ 的有向边 $(x, y) \in A$ 表示。这种图结构使他们能够模拟能量在整个生态系统中从一个物种到另一个物种的流动。

图像由 ChatGPT 4o 生成。

定义了生态系统的两个核心特征:

  • 独立营养群 (Independent Trophic Group):如果对于动物物种集合 $S$ 中的任意物种 $x \in S$,都无法通过一系列有向捕食关系到达 $S$ 中的另一个物种 $y \in S$(对于某些 $y \neq x$),即在 $D$ 中不存在从 $x$ 到 $y$ 的有向路径,则该集合 $S$ 被归类为一个独立营养群
  • 营养平衡物种 (Trophic Balance Species):如果一个物种作为直接或间接捕食者影响它的物种数量(即在 $D$ 中通过有向路径可以到达的物种,不包括其自身),与作为直接或间接猎物影响它的物种数量(即在 $D$ 中可以通过有向路径到达它的物种,不包括其自身)几乎相等,则该物种被称为营养平衡物种。具体来说,营养平衡物种是指上述两个数量的绝对差值在生态系统所有物种中达到最小的物种。

考虑一个拥有 $n = 4$ 个物种和 $m = 3$ 条捕食关系的生态系统:

  • 物种 1:草(节点 1)
  • 物种 2:兔子(节点 2)
  • 物种 3:狐狸(节点 3)
  • 物种 4:老鹰(节点 4)

代表捕食关系的有向边如下:

  • $(1, 2)$:草被兔子吃。
  • $(2, 3)$:兔子被狐狸吃。
  • $(2, 4)$:兔子也被老鹰吃。

现在,考虑集合 $S = \{3, 4\}$(狐狸和老鹰)。狐狸(节点 3)和老鹰(节点 4)之间不存在有向路径;狐狸无法到达老鹰,老鹰也无法通过任何有向路径到达狐狸。因此,该集合符合独立营养群的条件。

物种分析:

  • 物种 1(草):
    • 可到达:3(兔子、狐狸和老鹰)
    • 可被到达:0(无)
    • 绝对差值:$|3 - 0| = 3$
  • 物种 2(兔子):
    • 可到达:2(狐狸和老鹰)
    • 可被到达:1(草)
    • 绝对差值:$|2 - 1| = 1$
  • 物种 3(狐狸):
    • 可到达:0(无)
    • 可被到达:2(草和兔子)
    • 绝对差值:$|0 - 2| = 2$
  • 物种 4(老鹰):
    • 可到达:0(无)
    • 可被到达:2(草和兔子)
    • 绝对差值:$|0 - 2| = 2$

在这些物种中,兔子的绝对差值最小,为 1,这表明它们是该生态系统中的一个营养平衡物种。

已知该生态系统中的任何独立营养群的大小最多为 $k$。任务是找到该生态系统中所有营养平衡物种的集合。

输入格式

第一行包含两个整数 $n$ 和 $m$,其中 $n$(或 $m$)表示所研究生态系统导出的有向图 $D$ 中的节点数(或边数)。节点编号为 $1, 2, \dots, n$。接下来 $m$ 行,第 $i$ 行包含两个整数 $x_i$ 和 $y_i$,表示一条从节点 $x_i$ 指向节点 $y_i$ 的有向边。

输出格式

在单行中按升序输出所有营养平衡物种的节点编号。任意两个相邻的节点编号之间用一个空格隔开。

数据范围

  • $1 \le n \le 2 \times 10^5$
  • $0 \le m \le \min\{n(n - 1), 4 \times 10^5\}$
  • $k$ 不是输入的值,但保证对于每个研究的生态系统,都有 $1 \le k \le 16$。
  • 对于所有 $i$ ($1 \le i \le m$),$1 \le x_i, y_i \le n$ 且 $x_i \neq y_i$。
  • 每个有序对 $(x_i, y_i)$ 在输入中最多出现一次。

样例

输入 1

4 3
1 2
2 3
2 4

输出 1

2

输入 2

4 5
1 2
1 3
1 4
2 3
3 2

输出 2

2 3 4

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.