题目内容
某公司基地园区很大,里面有N个建筑,依次编号为1到N,通过M条路将这些建筑连接在一起,这N个建筑根据之间的距离,被分为不同的建筑群。云小核喜欢饭后散步,并用步数计算了每条路的长度。经过一段时间的散步,云小核发现了一个规律,两个建筑群间最近的两个建筑之间,步数大于K步。两个建筑群之间,可能没有路。云小核把每条路的步数给了你,请你计算园区里有多少个建筑群?
输入描述
输出描述
仅有一个整数,表示园区里有多少个建筑群
样例
输入:
6 5 3
1 2 1
1 3 4
2 4 2
3 5 3
3 6 2
输出:2
解题思路
为了确定建筑群的数量,我们需要根据给定的步数阈值 K将建筑划分为不同的群组。具体步骤如下:
- 过滤道路:首先,只考虑那些步数长度d小于或等于K的道路。因为这些道路上的步数不超过阈值K,可以将通过这些道路相连的建筑视为同一个群组的一部分。
- 构建连接关系:使用 并查集(Union-Find)数据结构来管理建筑之间的连接关系。对于每一条符合条件的道路,将连接的两个建筑合并到同一个群组中。
- 计算群组数量:遍历所有建筑,找出其最终的根节点(代表群组的唯一标识),并统计不同根节点的数量,即为建筑群的总数。
解题步骤:
- 初