CF840B Leha and another game about graph

题目描述

Leha 正在玩一款电脑游戏,每一关会给出一个连通图,包含 $n$ 个顶点和 $m$ 条边。图中可能包含重边,但不包含自环。每个顶点上都有一个整数 $d_i$,其取值可以是 $0$、$1$ 或 $-1$。为了通过这一关,他需要找出图中一个“好”的边的子集,或者说明不存在这样的子集。一个子集被称为“好”,如果只保留原图中的这部分边后,对于每个顶点 $i$,要么 $d_i = -1$,要么该顶点的度数对 $2$ 取模后等于 $d_i$。Leha 想尽快通过游戏,请你帮帮他。如果存在多种正确答案,你可以输出任意一种。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \le n \le 3 \cdot 10^{5}$,$n-1 \le m \le 3 \cdot 10^{5}$),表示顶点数和边数。 第二行包含 $n$ 个整数 $d_1, d_2, \ldots, d_n$($-1 \le d_i \le 1$),表示每个顶点上的数字。 接下来 $m$ 行,每行包含两个整数 $u$ 和 $v$($1 \le u, v \le n$),表示一条边。保证输入的图是连通的。

输出格式

如果不存在解,输出一行 $-1$。否则,第一行输出 $k$,表示子集中边的数量。接下来的 $k$ 行,每行输出一条边的编号。边按照输入顺序编号,从 $1$ 开始。

说明/提示

在第一个样例中,图中只有一个没有边的顶点。它的度数是 0,不可能得到 1。 由 ChatGPT 5 翻译