#P13548. [OOI 2022] Air Reform

[OOI 2022] Air Reform

Description

伯兰德是一个拥有发达航空网络的大国。全国共有 nn 个城市,这些城市一直由 Berlaflot 航空公司运营。该公司在 mm 对城市间运营双向航班,第 ii 条航线连接城市 aia_ibib_i,票价为 cic_i,双向价格相同。

已知通过 Berlaflot 的航班,可以从任意城市到达任意其他城市(可能需要中转)。对于一条由多段航班组成的路径,其总费用等于其中最贵一段的费用。更正式地说,从城市 t1t_1tkt_k(中转 k2k-2 次),路径费用为 t1t_1t2t_2t2t_2t3t_3,……,tk1t_{k-1}tkt_k 这些航班中费用的最大值。当然,所有航段都必须由 Berlaflot 执飞。

最近,S8 Airlines 新进入了伯兰德市场。S8 Airlines 在所有未被 Berlaflot 连接的城市对之间开通了双向航班。也就是说,任意一对城市之间,要么有 Berlaflot 的航班,要么有 S8 Airlines 的航班。

S8 Airlines 的航班费用如下:对于通过 S8 Airlines 连接的城市 xxyy,其票价等于 Berlaflot 网络下 xxyy 之间所有路径中费用最小的那一条(即路径上的最大航段费用最小)。

已知通过 S8 Airlines 的航班,也可以在所有城市之间互达,且路径费用定义同上,也是路径上最大航段费用。

由于 S8 Airlines 的竞争,Berlaflot 决定进行航空改革,调整自家航班票价:对于 Berlaflot 的第 ii 条航班(连接 aia_ibib_i),新票价应等于 S8 Airlines 网络下 aia_ibib_i 之间的最小路径费用。请帮 Berlaflot 计算每条航班改革后的新票价。

Input Format

每组测试包含多组数据。第一行包含两个整数 ttgg1t100001 \le t \le 10\,0000g80 \le g \le 8),分别表示测试组数和当前测试组编号。接下来是 tt 组测试数据。

每组测试的第一行包含两个整数 nnmm4n2000004 \le n \le 200\,000n1m200000n-1 \le m \le 200\,000m(n1)(n2)2m \le \frac{(n-1)(n-2)}{2}),分别表示城市数量和 Berlaflot 航班数量。

接下来的 mm 行,每行三个整数 ai,bi,cia_i, b_i, c_i1ai,bin1 \le a_i, b_i \le n1ci1091 \le c_i \le 10^9),表示第 ii 条航班连接的城市和票价。

保证没有航班连接同一个城市,也没有两条航班连接同一对城市。保证 Berlaflot 和 S8 Airlines 的航班网络都连通。

记所有测试数据中 nn 的总和为 NNmm 的总和为 MM。保证 N,M200000N, M \le 200\,000

Output Format

对于每组测试数据,输出 mm 个整数,第 ii 个为第 ii 条 Berlaflot 航班改革后的新票价,按输入顺序输出,空格分隔。

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

Hint

说明

在第一个测试样例中,S8 Airlines 会在以下城市对之间开通航班:(1,3)、(1,4)、(2,4)。

城市 1 和 3 之间的 S8 航班费用为 2,因为 Berlaflot 网络下最小路径费用为 2(1-2 票价 1,2-3 票价 2,最大为 2)。

城市 1 和 4 之间的 S8 航班费用为 3,因为 Berlaflot 网络下最小路径费用为 3(1-2 票价 1,2-3 票价 2,3-4 票价 3,最大为 3)。

城市 2 和 4 之间的 S8 航班费用为 3,因为 Berlaflot 网络下最小路径费用为 3(2-3 票价 2,3-4 票价 3,最大为 3)。

航空改革后,Berlaflot 的航线 1-2 的票价变为 3,因为 S8 Airlines 网络下 1 和 2 之间最小路径费用为 3(1-4 票价 3,2-4 票价 3,最大为 3)。

航线 2-3 的票价也变为 3,因为 S8 网络下 2 和 3 的最小路径费用为 3(2-4 票价 3,1-4 票价 3,1-3 票价 2,最大为 3)。

航线 3-4 的票价也变为 3,因为 S8 网络下 3 和 4 的最小路径费用为 3(1-3 票价 2,1-4 票价 3,最大为 3)。

第二个测试样例中,S8 Airlines 会在城市对(1,4)、(2,3)、(2,5)、(3,4)、(3,5)之间开通航班,票价分别为 1、1、2、1、2。

评分说明

本题测试数据分为 8 组。只有通过某组所有测试点,且通过所有必需的前置组,才能获得该组分数。离线评测表示该组的评测结果将在比赛结束后公布。有些分组不要求通过样例测试点。

组别 分值 nn NN cic_i 必须通过的组 备注
0 -- -- --
1 11 n10n \le 10 N10000N \le 10\,000 0
2 10 n100n \le 100 0, 1
3 11 n1000n \le 1000 ci2c_i \le 2 --
4 12 -- 0, 1, 2
5 -- --
6 17 ci2c_i \le 2 3
7 10 ci10c_i \le 10 3, 6
8 17 -- 0--7 离线评测