CF242D Dispute
题目描述
Valera 有 $n$ 个计数器,编号从 $1$ 到 $n$。其中一些计数器之间通过导线相连,并且每个计数器上都有一个特殊按钮。
最开始,所有计数器上的数值都是 $0$。当你按下某个计数器的按钮时,该计数器上的值会增加 $1$,并且所有与它通过导线直接相连的计数器上的值也会各自增加 $1$。
Valera 和 Ignat 发生了争执,争执的内容如下。Ignat 想到了一个长度为 $n$ 的整数序列 $a_1, a_2, \ldots, a_n$。Valera 需要选择一些不重复的计数器,并且每个选中的计数器的按钮只能按一次(其它计数器的按钮不按)。如果此后存在某个编号为 $i$ 的计数器,其数值恰好为 $a_i$,那么 Valera 输掉争执;否则,Valera 获胜。
请你帮助 Valera 确定需要按哪些计数器的按钮,才能赢得争执。
输入格式
第一行包含两个用空格分隔的整数 $n$ 和 $m$,分别表示 Valera 有的计数器数量和通过导线相连的计数器对的数量,满足 $1 \leq n, m \leq 10^5$。
接下来的 $m$ 行,每行包含两个用空格分隔的整数 $u_i$ 和 $v_i$,表示编号 $u_i$ 和 $v_i$ 的计数器之间有一根导线连接,满足 $1 \leq u_i, v_i \leq n$,$u_i \ne v_i$。保证每一对连接的计数器在输入中只出现一次。
最后一行包含 $n$ 个用空格分隔的整数 $a_1, a_2, \ldots, a_n$,其中 $0 \leq a_i \leq 10^5$,$a_i$ 是 Ignat 为第 $i$ 个计数器选择的值。
输出格式
如果 Valera 无法赢得争执,第一行输出 $-1$。
否则,第一行输出一个整数 $k$($0 \leq k \leq n$),表示应当按下按钮的计数器数量。第二行输出 $k$ 个不重复的计数器编号,顺序任意,表示 Valera 应该按下按钮的计数器编号。
如果存在多种解法,你可以输出其中任意一种。
说明/提示
由 ChatGPT 5 翻译