luogu#P10080. [GDKOI2024 提高组] 匹配
[GDKOI2024 提高组] 匹配
题目描述
给定一个 个点 条边的二分图,左部点编号为 ,右部点编号为 。
给定每条边为黑色或白色,你需要找到一个完美匹配,使得匹配里的黑色边数恰好为偶数。
如果你对二分图的定义有疑问:
- 二分图是一个无向图,点分为左右两部分,每部分各 个点,每条边都连接两个属于不同部分的点。
- 一个完美匹配是一个大小为 的边的集合,使得每个点都恰好与集合里的一条边相连。
输入格式
第一行一个正整数 ,表示数据组数。每组数据的格式如下:
第一行两个正整数 ,表示图的点数和边数。接下来 行,每行三个整数 $u_i, v_i, c_i(1 \leq u_i \leq n, n+1 \leq v_i \leq 2n, 0 \leq c_i \leq 1)$,表示一条连接 , 的边,颜色为 。 表示白色, 表示黑色。
输出格式
对于每组数据:如果无解,输出一行 。否则,输出一行 个正整数,表示你找到的完美匹配里每条边的编号。边按照输入顺序编号为 。
2
3 7
3 6 1
2 6 0
2 5 1
3 5 1
1 6 1
3 4 0
1 5 1
3 7
1 6 1
3 5 1
2 5 1
3 4 1
1 5 0
1 4 0
2 6 0
5 3 6
-1
提示
【样例解释】
在第一组数据中,一个合法的完美匹配是 ,且里面有恰好两条黑色边。
在第二组数据中,虽然存在完美匹配,但每个完美匹配都有奇数条黑色边。
【数据范围】
本题使用子任务捆绑测试。
对于所有数据,保证 ,,。保证图中不存在重边,即对于 有 。
- Subtask 1(20%):,。
- Subtask 2(20%):,。
- Subtask 3(20%): 在 里独立均匀随机。
- Subtask 4(40%):无特殊限制。