寻宝队的通道记录本
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
宋奕霏、崔馨月、武锦澄和曹智钦正在为校园科技节设计一座虚拟“寻宝乐园”。
宋奕霏画好了地图,崔馨月给通道标好了长度。她们发现,每个地点通往其他地点的通道数量都不一样。
武锦澄想到了一个办法:“给每个地点准备一份可以不断添加内容的通道清单!读到哪条通道,就把它记到对应起点的清单末尾。”
曹智钦点点头:“记录完成后,我要看看每个地点的清单,还要知道所有通道的长度加起来是多少。”
请你使用 vector 邻接表,帮他们完成这个通道记录本。
题目描述
寻宝乐园里有 个地点,编号为 至 ,以及 条带长度的单向通道。
每条通道用三个整数 表示:从地点 出发,到达地点 ,长度为 。
你需要完成两件事:
- 计算所有通道的长度之和。
- 按地点编号 的顺序,输出每个地点的出发通道清单。每份清单中,通道的顺序必须与它们在输入中出现的顺序一致。
通道只能按照给定方向通行, 不代表存在 。
同一对地点之间可能有多条同方向通道。每一条都要单独保存、单独输出,其长度也要单独计入总和。
输入格式
第一行包含两个整数 ,分别表示地点数量和通道数量。
接下来 行,每行包含三个整数 ,表示一条起点为 、终点为 、长度为 的单向通道。
通道的输入顺序不保证按起点或终点排序。
输出格式
共输出 行。
第一行输出一个整数,表示所有 条通道的长度之和。
接下来 行,按地点编号从小到大输出清单。地点 的清单占一行,格式为:
u k v1 w1 v2 w2 ... vk wk
其中:
- 是起点编号。
- 是以 为起点的通道数量。
- 每一组 分别表示一条通道的终点和长度。
- 这些通道必须按照它们在输入中出现的先后顺序输出,不要按终点编号排序。
如果地点 没有出发通道,只输出:
u 0
同一行内的整数之间用空格分隔,不要输出其他提示文字。
样例 1
4 5
1 3 5
2 4 6
1 2 7
3 1 4
1 3 2
24
1 3 3 5 2 7 3 2
2 1 4 6
3 1 1 4
4 0
样例 1 解释
所有通道的长度之和为 。
以地点 为起点的通道,按输入顺序依次是:
| 顺序 | 终点 | 长度 |
|---|---|---|
| 第一条 | ||
| 第二条 | ||
| 第三条 |
所以地点 的清单是 1 3 3 5 2 7 3 2。虽然有两条通道都通向地点 ,但它们需要分别记录。
地点 没有出发通道,所以仍要输出一行 4 0。
样例 2
3 0
0
1 0
2 0
3 0
样例 2 解释
地图上没有通道,总长度为 ,每个地点的清单都是空的。
数据范围
对于所有测试数据:
- 。
- 。
- ,且 。
- 。
- 同一对地点之间允许有多条同方向通道。
所有通道的长度之和可能超过 int 的范围,请使用 long long 保存总和。
学习提示
为每个地点建立一个 vector,每个元素保存一条出发通道的终点和长度。读入一条通道时,用 push_back 添加到起点对应的 vector 末尾;输出时按保存顺序遍历即可。
运行限制
- 时间限制: 秒。
- 内存限制: MiB。
- 使用标准输入、标准输出。