#CF2147H. 最大流 GCD 染色

最大流 GCD 染色

H. 最大流 GCD 染色

每次测试时间限制:22
每次测试内存限制:256256 兆字节


题目描述

考虑一个无向图 GG,它有 nn 个顶点,每条边有一个正整数容量。我们用 maxflow(u,v)\text{maxflow}(u,v) 表示从源点 uu 到汇点 vv 的最大流值。
我们称图 GG好的 (good),如果存在一个正整数 d2d \ge 2,使得 dd 整除所有 n(n1)n \cdot (n-1)maxflow(u,v)\text{maxflow}(u,v) 的值(对所有不同顶点对 (u,v)(u,v))。注意,特别地,任何没有边的图都是好的。

你得到一个图,你需要对其顶点进行染色,使得对于每种颜色,由该颜色顶点诱导的子图是好的。
请找到一种使用最少颜色数的染色方案。

*由顶点集合 SS 诱导的子图是指:顶点集为 SS,边集为原图中两端点都在 SS 中的所有边。


输入

每个测试包含多个测试用例。
第一行包含测试用例的数量 tt1t10001 \le t \le 1000)。
接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nnmm1n501 \le n \le 500mn(n1)20 \le m \le \frac{n(n-1)}{2}),分别表示图的顶点数和边数。

接下来 mm 行,每行包含三个整数 u,v,wu, v, w1u,vn1 \le u, v \le n1w1061 \le w \le 10^6),表示连接顶点 uuvv 的边,容量为 ww
保证没有自环,也没有重边。

所有测试用例的 n4n^4 之和不超过 50450^4
可以证明,其他限制意味着所有测试用例的 mm 之和不超过 5000050000,因此无需担心输入大小。


输出

对于每个测试用例,第一行输出一个整数 cc,表示最少需要的颜色数。
然后输出 2c2c 行,描述染色方案。
对于每个 1ic1 \le i \le c,你需要输出两行:
第一行一个整数 kik_i,表示第 ii 种颜色的顶点数;
第二行 kik_i 个整数,表示染成第 ii 种颜色的顶点编号。

如果有多种方案,输出任意一种即可。


示例输入

2
5 5
1 2 2
2 3 3
3 4 4
4 5 5
5 1 6
6 7
1 2 2
1 3 2
1 4 2
2 5 1
3 5 1
4 5 1
5 6 6

示例输出

2
2
2 4
3
1 3 5
1
6
1 2 3 4 5 6

注释

第一个测试用例的答案中,第一种颜色诱导的子图没有边,第二种颜色诱导的子图只有一条容量为 66 的边;因此两个子图都是好的。

第二个测试用例中,整个图是好的,因为任意两个顶点之间的 maxflow\text{maxflow} 值都能被 33 整除。