CF228E The Road to Berland is Paved With Good Intentions

题目描述

Berland 有 $n$ 个城市,其中一些城市之间通过双向道路连接。对于每条道路,我们都知道它是否已经铺设了沥青。 Berland 的国王 Valera II 想要将所有道路都铺设成沥青路。为此,他召集了一批工人。每天,Valera 恰好选择一个城市,并命令工人团队将该城市出发的所有道路都铺上沥青。英勇的工人们会在一天之内完成国王的命令,然后就回家了。 然而,事情并不像 Valera II 想象的那样顺利。工人团队的主要成员是“gastarbeiters”——充满热情却对 Berland 语命令理解并不准确的非法移民。因此,当收到将某个城市出发的所有道路铺上沥青的命令时,他们会将所有未铺沥青的道路铺上沥青,而已铺沥青的道路则会把沥青剥离掉。 得知此事后,Valera II 十分沮丧,但此时为时已晚,他只能请你编写一个程序,判断能否在最多 $n$ 天内将 Berland 的所有道路都铺设成沥青路。帮助国王完成这个任务吧。

输入格式

第一行包含两个用空格分隔的整数 $n,m$,分别表示 Berland 的城市数量和道路数量。 接下来 $m$ 行,每行包含三个用空格分隔的整数 $a_i,b_i,c_i$,表示第 $i$ 条道路连接城市 $a_i$ 与城市 $b_i$,$c_i$ 表示道路初始是否已铺设沥青,若为 $1$ 则已铺设,否则为 $0$。 其中 $1 \le a_i, b_i \le n$ 且 $a_i \ne b_i$,$0 \le c_i \le 1$。 保证任意两座城市之间最多只有一条道路。

输出格式

第一行输出一个整数 $x$($0 \le x \le n$),表示需要多少天能将所有道路都铺上沥青。 第二行输出 $x$ 个用空格分隔的整数,依次表示每一天工人前往的城市编号。若有多种可行方案,输出任意一种即可。 如果无法完成目标,则输出 "Impossible"(不带引号)。

说明/提示

由 ChatGPT 5 翻译