5612:[GESP202609七级] 必经之路

文件提交:无需freopen 内存限制:128 MB 时间限制:1.000 S
评测方式:普通裁判
金币值:
命题人:
提交:0 解决:0

题目描述

## 题目背景 2026 年 09 月 GESP C++ 七级编程第 1 题 ## 题目描述 给定一张有 $n$ 个结点 $m$ 条边的有向图 $G$,$G$ 中的结点依次以 $1,2,\ldots,n$ 编号。第 $i$ 条边($1\le i\le m$)从结点 $u_i$ 指向结点 $v_i$。 $G$ 中任一入度为 $0$ 的结点可以作为合法起点,任一出度为 $0$ 的结点可以作为合法终点。 如果 $G$ 中所有可能的从合法起点到合法终点的路径都会经过结点 $u$,则称 $u$ 是必经点。注意必经点可以为合法起点或合法终点。 请你求出 $G$ 中所有必经点的编号。 例如,在下图中合法起点有点 $1$ 与点 $2$,合法终点有点 $7$ 与点 $8$。 ```text (1) (5)---->(7) \ ^ \ ^ v / v / (3) / (6) ^ \ / \ / v / v (2)---->(4) (8) ``` 所有合法起点到合法终点的路径为: - $1\to 3\to 4\to 5\to 7$ - $1\to 3\to 4\to 5\to 6\to 7$ - $1\to 3\to 4\to 5\to 6\to 8$ - $2\to 3\to 4\to 5\to 7$ - $2\to 3\to 4\to 5\to 6\to 7$ - $2\to 3\to 4\to 5\to 6\to 8$ - $2\to 4\to 5\to 7$ - $2\to 4\to 5\to 6\to 7$ - $2\to 4\to 5\to 6\to 8$ 因此必经点有两个,编号分别为 $4,5$。 ## 输入格式 第一行,两个正整数 $n,m$,表示有向图 $G$ 中的结点数与边数。 接下来 $m$ 行,每行两个正整数 $u_i,v_i$,表示一条从结点 $u_i$ 指向结点 $v_i$ 的有向边。 保证 $G$ 中至少有一个合法起点,至少有一个合法终点,且至少存在一条从一个合法起点到一个合法终点路径,同时不存在孤立点(即出度和入度都为 $0$ 的点)。 ## 输出格式 第一行,一个整数,表示必经点的数量 $k$。 如果存在必经点,则第二行从小到大输出 $G$ 中所有必经点的编号。 ## 样例 ```input1 8 9 1 3 2 3 3 4 4 5 5 6 6 7 6 8 2 4 5 7 ``` ```output1 2 4 5 ``` ```input2 8 9 1 3 2 3 3 4 4 5 5 6 6 7 6 8 2 5 4 7 ``` ```output2 0 ``` ## 数据范围 对于 $40\%$ 的测试点,保证 $1\le n\le 100$,$1\le m\le 200$。 对于所有测试点,保证 $1\le n\le 1000$,$1\le m\le 2000$。保证 $G$ 中至少有一个合法起点,至少有一个合法终点,且至少存在一条从一个合法起点到一个合法终点路径,同时不存在孤立点(即出度和入度都为 $0$ 的点)。

来源/分类