P11483 [NordicOI 2021] The Elk
题目背景
翻译自 [NordicOI2021](https://github.com/nordicolympiad/nordic-olympiad-2021) 的 [B](https://github.com/nordicolympiad/nordic-olympiad-2021/blob/main/pdf/elk.pdf?sid_for_share=99125_3) 题。
[NordicOI2021 官网](https://noi2021.nio.no/),需要使用 Wayback machine 查看。
题目描述
你现在在森林当中。这片森林里还有一头母牛和一只小牛。你知道,站在小牛和母牛之间是危险的。
我们将森林抽象成由 $n$ 个点组成,这些点之间有 $m$ 条双向边。点的编号从 $0 \sim n-1$,边的编号为 $0 \sim m-1$。
我们将从母牛到小牛的路径定义为一系列的点 $p_0 \sim p_k$,使:
1. $p_0$ 为母牛的位置。
2. $p_k$ 为小牛的位置。
3. 对于每个满足 $0 \le i < k$,$p_i$ 和 $p_{i+1}$ 间有直接连边。
4. 和点 $3$ 连接的边在不会重复出现在路径上,但是点可以重复。
在这条路径上的所有的点都是危险的,因为母牛会认为你在她和小牛之间。你需要找到所有安全的点。
输入格式
第一行四个整数 $n,m,A,B$,其中 $A$ 和 $B$ 分别为母牛和小牛的位置。
接下来 $m$ 行,编号从 $0 \sim m-1$,表示 $m$ 条边。每行两个整数 $u_i,v_i$,表示边的两个端点。
输出格式
第一行应输出一个整数 $S$,表示安全位置的数量。
接下来 $S$ 行表示安全位置的编号,你需要确保输出的 $S$ 个整数依次递增。
说明/提示
| Subtask | 分数 | 约束 |
| :----------: | :----------: | :----------: |
| Subtask $0$ | 10 | $n \le 10$,$m \le 45$ |
| Subtask $1$ | 20 | $m=n-1$,保证图连通 |
| Subtask $2$ | 30 | $n \le 200$,$m \le 500$ |
| Subtask $3$ | 40 | 无特殊限制 |
对于 $100\%$ 的数据,$2\le n \le 50000$,$2 \le m \le 100000$。$0 \le u_i,v_i