必经之路

eg882374 程序题 共 个子题

题目描述

给定一张有 $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$。

(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$ 中所有必经点的编号。

输入样例 1

8 9
1 3
2 3
3 4
4 5
5 6
6 7
6 8
2 4
5 7

输出样例 1

2
4 5

输入样例 2

8 9
1 3
2 3
3 4
4 5
5 6
6 7
6 8
2 5
4 7

输出样例 2

0

数据范围

对于 40% 的测试点,保证 $1 \le n \le 100$,$1 \le m \le 200$。

对于所有测试点,保证 $1 \le n \le 1000$,$1 \le m \le 2000$。保证 $G$ 中至少有一个合法起点,至少有一个合法终点,且至少存在一条从一个合法起点到一个合法终点路径,同时不存在孤立点(即出度和入度都为 $0$ 的点)。

本题为编程题,提交代码并运行通过测试点后判分。

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
提交记录
共 条 仅展示自由练习提交
正在加载提交记录…
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧