#HK4242. 「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,满足以下条件:

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

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

输入格式

第一行包含四个整数 N,M,A,BN, M, A, BNNMM 分别是地点和直接道路的数量,AABB 分别是母鹿和小鹿当前所在的位置。

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

输出格式

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

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

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
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
  • 任意一对地点之间最多只有一个直接道路
  • 母鹿和小鹿之间总会有至少一条路径

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

子任务 分值 附加限制
11 1010 N10N \le 10, M45M \le 45
22 2020 M=N1M = N-1 且图是连通的
33 3030 N200N \le 200, M500M \le 500
44 4040 无附加限制