#HK4953. 「EGOI2023」骑车与汽车
「EGOI2023」骑车与汽车
题目描述
题目译自 European Girls' Olympiad in Informatics 2023 Day1 T4. Bikes vs Cars
在瑞典的隆德,自行车是非常普遍的交通方式。然而,狭窄的街道上同时容纳汽车和自行车手常常很困难。为了改善这种情况,当地政府决定彻底重新设计街道网络。
隆德有 个重要地点(编号从 到 ),人们经常在这些地点之间往返。人们通过路径(即从一个地点到另一个地点的一系列街道)在两地之间旅行。一辆车(汽车或自行车)只有在路径上所有相关车道的宽度不小于车辆宽度时才能通行。每条新建街道连接两个重要地点,总宽度为 ,你可以任意分配自行车道和汽车道的宽度。隆德的工程师们最近发明了宽度为 的汽车和自行车(这些车辆可以在宽度为 的车道上通行)。
工程师们测量了城市中汽车和自行车的宽度。对于每对重要地点,他们知道能在两地间通行的最宽汽车和最宽自行车宽度,但政府还要求不能有更宽的汽车或自行车通过。
形式上,对于每对地点 ),你会得到两个整数 和 。你的任务是构建一个连接 个地点的街道网络。每条街道宽度为 ,但你可以为每条街道 决定其自行车道宽度 ,从而汽车道宽度为 。网络必须满足以下条件:
- 每对地点之间可以通行(可能需要宽度为 的自行车或汽车)。
- 对于每对地点 ,存在一条路径,仅使用汽车道宽度至少为 的街道,从 到 。同时, 是满足此条件的最大值,即 到 的所有路径中,至少有一条街道的汽车道宽度不超过 。
- 对于每对地点 ,存在一条路径,仅使用自行车道宽度至少为 的街道,从 到 。同时, 是满足此条件的最大值。
你能帮助隆德政府设计这样的街道网络吗?由于资金有限,你最多可以建造 条街道。你可以在同一对重要地点之间建造多条街道,但不能连接同一地点。所有街道均可双向通行。
输入格式
第一行包含两个整数 ,分别表示隆德的重要地点数量和可建造街道的宽度。
接下来的 行包含整数 。第 行包含所有满足 的 。因此,第一行仅包含 ,第二行包含 和 ,第三行包含 ,依此类推。
接下来的 行以相同格式包含整数 。
输出格式
如果无法构建这样的街道网络,输出一行字符串 NO。
否则,第一行输出一个整数 ,表示网络中的街道数量。
接下来的 行,每行输出三个整数 ,表示在 和 之间有一条自行车道宽度为 (汽车道宽度为 )的街道。
你最多可使用 条街道。输出的街道必须满足 , 且 。你可以在同一对重要地点之间使用多条街道(自行车道宽度可能不同)。
如果存在多种解决方案,你可以输出任意一种。
2 1
1
1
2
0 1 0
0 1 1
街道宽度为 ,地点 和 之间需要汽车道和自行车道宽度至少为 。解决方案是建造两条连接 和 的街道,一条自行车道宽度为 (汽车道宽度为 ),另一条汽车道宽度为 (自行车道宽度为 )。

4 1
0
0 1
0 0 1
1
1 1
1 1 1
NO
街道宽度为 ,每对地点之间需要自行车道宽度为 的路径,且地点 到 和 到 之间存在汽车道宽度为 的路径。由于 ,从 到 不应存在汽车道宽度为 的路径。然而,连接 到 和 到 的路径会形成这样的路径,因此无法构建满足条件的街道网络。
6 6
5
4 4
1 1 1
1 1 1 3
1 1 1 5 3
2
3 2
6 2 3
3 2 5 3
3 2 4 3 4
8
0 1 1
0 2 3
1 2 2
0 3 6
2 4 5
3 4 3
3 5 1
4 5 4
以下街道网络满足所有条件。例如,地点 到 之间需要汽车道最小宽度为 的路径(例如沿 ),以及自行车道最小宽度为 的路径(例如沿 )。同时,所有连接的路径最小宽度均不超过要求值。注意,样例 3 存在多种其他解决方案。

数据范围与提示
对于所有输入数据,满足:
- (对于所有 )
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 所有 相同,所有 相同, | ||
| 所有 相同,所有 相同 | ||
| 所有 相同 | ||
| 无附加限制 |