#L4242. 「NordicOI 2021」The Elk

「NordicOI 2021」The Elk

题目描述
题目译自 NordicOI 2021 T2 「Pearls」

你现在在一片森林里。在这片森林里有一对麋鹿——一只母鹿和她的小鹿。众所周知,站在母鹿和小鹿之间是很危险的,但你并不是很清楚如何避免这种情况。

我们将这片森林建模为由 NN 个地点和 MM 条直接道路组成的网络。这些道路可以双向通行。地点编号从 00N1N-1,道路编号从 00M1M-1

我们定义从母鹿到小鹿的路径为一系列地点 p0,p1,p2,,pkp_0, p_1, p_2, \ldots , p_k,满足以下条件:

  • p0p_0 是母鹿所在的位置
  • pkp_k 是小鹿所在的位置
  • 对于每个满足 0i<k0 \le i < kii,地点 pip_ipi+1p_{i+1} 之间有直接道路
  • 路径中不能走过重复的道路,但允许地点重复

显然,任何位于这种路径上的地点都是危险的,因为母鹿可能会认为你站在她和小鹿之间。你的任务是找出所有安全的地点,也就是不在任何这种路径上的地点。


输入格式

第一行包含四个整数 NN, MM, AA, BBNNMM 分别是地点和直接道路的数量,AABB 分别是母鹿和小鹿当前所在的位置。

接下来的 MM 行,每行描述一个道路。第 ii 行包含两个整数 UiU_iViV_i,表示第 ii 个道路在地点 UiU_iViV_i 之间。


输出格式

输出的第一行应包含一个整数 SS,表示森林中安全的地点数量。

接下来的 SS 行应列出所有安全的地点,每行一个,按编号升序排列。


样例 1

输入:

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

输出:

4
1
2
5
8

样例 2

输入:

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

输出:

2
6
7

数据范围与提示

对于所有输入数据,满足:

  • 2N51042 \le N \le 5 \cdot 10^4
  • 2M1052 \le M \le 10^5
  • 0Ui,Vi<N0 \le U_i, V_i < N (1iM)(1\leq i\leq M)
  • 0A,BN10 \le A, B \le N-1
  • 对于所有 iiUiViU_i \neq V_i
  • 任意一对地点之间最多只有一个直接道路
  • 母鹿和小鹿之间总会有至少一条路径

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
1 10 N10N \le 10, M45M \le 45
2 20 M=N1M = N-1 且图是连通的
3 30 N200N \le 200, M500M \le 500
4 40 无附加限制