时间限制: 5000ms 内存限制: 256MB
描述
你正在参与一项输油管道的项目,此项目的目标是架设一组输油管道系统,使得从源头到目的地输送的石油流量最大。如果直接从源头架设管道到目的地,一旦管道有损坏,将无法输送石油。为了增强管道系统抵抗破坏的能力,你决定设置 N - 2 个中间节点,从而把管道分散开来。
源头和目的地可以视为特殊的节点,他们的编号分别为 1 和 N,而其他的中间节点的标号为 2 到 N - 1。每条管道有特定的流量限制 c,石油可以以不超过 c 的速率在管道内流动。两个节点之间至多由一条管道连接,也就是说这两个节点之间单位时间内流动的石油不超过 c。
现在你们已经选定了 N 个节点,并且制定好了建设计划。你想知道,每当一条管道建造完成,从节点 1 到节点 N 最大流量能够增加多少。
输入
输入包括多组数据。第一行是整数 T,表示有多少组测试数据。每组测试数据的第一行包括两个整数 N 和 M,表示节点的数量和将要建造的管道数量。接下来 M 行按建造顺序描述每条管道,每行包括三个整数 i, j, c,表示要在节点 i 和 j 之间建造一条容量为 c 的管道。
输出
对于每组测试数据,先输出一行“Case #c:”,其中 c 为测试数据编号(从 1 开始)。紧接着按建造顺序输出使得总流量增加的管道编号和相应的增加量,以一个空格隔开。
数据范围
1 ≤ T ≤ 100
0 ≤ M ≤ N(N - 1)/2
1 ≤ v ≠ u ≤ N
1 ≤ c ≤ 100
小数据:2 ≤ N ≤ 20
大数据:2 ≤ N ≤ 200
-
样例输入
-
3 2 1 1 2 3 4 5 1 2 9 2 3 7 3 4 6 2 4 4 1 3 1 5 7 1 2 1 1 3 2 1 4 3 2 5 4 3 2 3 4 3 3 3 5 2
样例输出
-
Case #1: 1 3 Case #2: 3 6 4 3 5 1 Case #3: 4 1 5 2 6 1 7 2