#P12639. 「OOI 2022 Day 2」航空改革
「OOI 2022 Day 2」航空改革
题目描述
伯兰迪亚是一个拥有发达航空系统的庞大国家。全国共有 个城市,历史上由伯兰航空公司提供服务。伯兰航空公司在 对城市之间运营双向航班,第 个航班连接城市 和 ,单程票价为 。
已知通过伯兰航空的航班,可以从任意城市到达任意其他城市(可能需要中转),并且任何由多个中转航班组成的路线的成本等于其中最贵的航班的成本。更正式地说,从城市 到城市 的路线,若有 次中转经过城市 ,则该路线的成本为从 到 、 到 、 到 等直到 到 的所有航班成本的最大值。当然,所有这些航班必须由伯兰航空运营。
最近,伯兰迪亚新成立了一家航空公司 S8 航空。该公司在所有没有伯兰航空航班的城市对之间运营双向航班。因此,每对城市之间要么有伯兰航空的航班,要么有 S8 航空的航班。
S8 航空的航班价格计算如下:对于每对运营 S8 航空航班的城市 和 ,该航班的成本等于伯兰航空从 到 的最低路线成本(按照上述成本计算规则)。
已知通过 S8 航空的航班,可以从任意城市到达任意其他城市(可能需要中转),并且与伯兰航空类似,S8 航空的多段中转路线的成本等于其中最贵的航班的成本。
由于与 S8 航空的竞争加剧,伯兰航空决定进行航空改革,调整其航班价格。具体来说,对于连接城市 和 的第 个航班,伯兰航空希望将其价格调整为 S8 航空从 到 的最低路线成本。请帮助伯兰航空的经理计算新的航班价格。
输入格式
每个测试点包含多组输入数据。第一行包含两个整数 和 ,分别表示输入数据的组数和子任务编号。接下来是各组数据的描述。
每组数据的第一行包含两个整数 和 $(4 \leq n \leq 200000, n-1 \leq m \leq 200000, m \leq \frac{(n-1)(n-2)}{2})$,分别表示伯兰迪亚的城市数量和伯兰航空的航班数量。
接下来的 行描述伯兰航空的航班,第 行包含三个整数 ,表示第 个航班连接的城市编号和该航班的成本。
保证没有航班连接同一城市自身,也没有两条航班连接同一对城市。保证通过伯兰航空的航班可以从任意城市到达任意其他城市,并且通过 S8 航空的航班也可以从任意城市到达任意其他城市。
设 表示所有数据组中 的总和, 表示所有数据组中 的总和。保证 。
输出格式
对于每组输入数据,在单独的一行中输出 个整数,其中第 个整数表示航空改革后第 个伯兰航空航班的成本。
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
数据范围与提示
详细子任务附加限制及分值如下表所示。其中子任务 是样例。
子任务 | 分值 | 附加限制 | 子任务依赖 | 备注 |
---|---|---|---|---|
, | ||||
, | ||||
,, | ||||
, | ||||
每组输入数据中 | ||||