#P10231. [COCI 2023/2024 #4] Putovanje

[COCI 2023/2024 #4] Putovanje

题目背景

译自 COCI 2023/2024 Contest #4 T4「Putovanje

题目描述

Malnar 先生终于迎来了他的年假。他决定要去的国家可以表示为 nn 个城市和 mm 条双向连接它们的道路。每条道路的长度相同,并且可以通过这些道路从任何一个城市到达另一个城市。从城市 aa 到城市 bb 的路径被定义为一系列道路,满足从城市 aa 开始,按照该序列依次遍历道路,最终到达城市 bb。路径的长度定义为该路径上的道路数量。

Malnar 先生像以往一样预订了其中一个城市最贵的酒店,然后开始规划他的旅程。为了方便规划,他记录了从酒店到每个城市的最短路径长度。

由于对他期待已久的假期感到兴奋,Malnar 先生完全忘记了酒店位于哪个城市。他当然不想错过这次旅行,所以他请你确定酒店可能位于哪些城市。

输入格式

第一行两个整数 nnm (1n5104,n1m105)m\ (1\le n\le 5\cdot 10^4,n-1\le m\le 10^5),分别表示城市和道路的数量。

接下来 mm 行,每行两个整数 ui,vi (1ui,vin,uivi)u_i,v_i\ (1\le u_i,v_i\le n,u_i\neq v_i),表示城市 uiu_iviv_i 之间有一条道路。任意两城市之间最多只有一条道路。

最后一行有 nn 个整数,第 ii 个整数 di (1di<n)d_i\ (-1\le d_i<n) 表示从城市 ii 到酒店所在城市的路径长度,如果 Malnar 先生没有记录这个值,则为 1-1

输出格式

第一行输出酒店可能位于多少个城市。

第二行输出酒店可能位于的城市编号,按升序输出

7 6
1 2
1 3
3 4
3 5
3 6
5 7
2 -1 -1 -1 -1 -1 3

2
4 6

6 6
1 2
2 3
3 4
4 5
5 6
6 1
2 -1 -1 1 -1 -1

2
3 5

4 3
1 2
2 3
3 4
1 -1 -1 1

0

提示

样例解释 1

从城市 44 到城市 11 的路径长度为 22,到城市 77 的路径长度为 33。因此,城市 44 满足两个条件,酒店可以位于那里。

同样的情况也适用于城市 66

子任务

子任务编号 附加限制 分值
11 m+1=n5 000m+1=n\le 5\ 000,对于所有 ii 满足 ui+1=viu_i+1=v_i 1010
22 对于所有 i>1i>1 满足 di=1d_i=-1 2020
33 n,m5 000n,m\le 5\ 000 3535
44 无附加限制 4545