type
status
date
slug
summary
tags
category
icon
password
创建时间
Jan 14, 2025 02:41 AM
一个公司在全国有
n
个分部,它们之间有的有道路连接。一开始,所有分部通过这些道路两两之间互相可以到达。公司意识到在分部之间旅行花费了太多时间,所以它们决定关闭一些分部(也可能不关闭任何分部),同时保证剩下的分部之间两两互相可以到达且最远距离不超过
maxDistance
。两个分部之间的 距离 是通过道路长度之和的 最小值 。
给你整数
n
,maxDistance
和下标从 0 开始的二维整数数组 roads
,其中 roads[i] = [ui, vi, wi]
表示一条从 ui
到 vi
长度为 wi
的 无向 道路。请你返回关闭分部的可行方案数目,满足每个方案里剩余分部之间的最远距离不超过
maxDistance
。注意,关闭一个分部后,与之相连的所有道路不可通行。
注意,两个分部之间可能会有多条道路。
1 <= n <= 10
1 <= maxDistance <= 105
0 <= roads.length <= 1000
roads[i].length == 3
0 <= ui, vi <= n - 1
ui != vi
1 <= wi <= 1000
- 一开始所有分部之间通过道路互相可以到达。
Floyd + 二进制枚举
这道题的评分是 2077。评分在 2000 以上的题目,需要你有比较强的综合知识。这道题,我在看到「距离的最小值」时,我觉得应该使用 Floyd 算法去求解所有点之间的最短路径。但是,没有思路去处理关闭分部这个操作。我最朴素的想法是将所有情况进行枚举,想了想这也太暴力了,也没想到合适的思路。看了答案,用的就是暴力枚举。不过,用了位运算来枚举所有的可能性,我觉得很赞,可以学习学习。
在使用位运算集合时,需要注意数据范围。本题的数据范围在
1≤ n ≤ 10