P3022 [USACO11OPEN] Odd degrees G
题目描述
奶牛们正在遭受入侵!它们的共和国由 $N$ 个城镇组成($1 \leq N \leq 50,000$),这些城镇通过 $M$ 条无向路径连接($1 \leq M \leq 100,000$),每条路径连接两个城镇 $A_i$ 和 $B_i$($1 \leq A_i \leq N$;$1 \leq B_i \leq N$;$A_i
eq B_i$;不会出现重复路径)。然而,共和国不一定是连通的——可能存在无法通过路径到达彼此的城镇对。
奶牛们知道入侵者计划对它们共和国内的每一条路径进行清点,所以它们愿意关闭各种路径,以使入侵者的工作尽可能困难。
请帮助奶牛们找到一种关闭路径子集的方法,使得每个城镇连接的剩余路径数为奇数,或者确定不存在这样的子集。
例如,考虑以下的奶牛共和国:
1---2
\ /
3---4
如果我们保留路径 1-3、2-3 和 3-4,并移除路径 1-2,那么城镇 1、2 和 4 将成为正好一条路径的端点,而城镇 3 将成为三条路径的端点:
1 2
\ /
3---4
输入格式
\* 第 1 行:两个用空格分隔的整数:$N$ 和 $M$
\* 第 2 行到第 $M+1$ 行:第 $i+1$ 行包含两个用空格分隔的整数:$A_i$ 和 $B_i$
输出格式
\* 第 1 行:一个整数,表示要保留的路径数量。如果不存在这样的子集,则仅输出一行,包含整数 -1。
\* 第 2 行到第 $K+1$ 行:每行包含一个要保留的路径的索引,范围为 1 到 $M$。这些索引必须两两不同。
说明/提示
感谢 @cn:苏侨念 提供的 Special Judge(由 ChatGPT 4o 翻译)