🗒️2959. 关闭分部的可行集合数目
2025-1-14
| 2025-1-14
0  |  阅读时长 0 分钟
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

📎 参考

 
  • 【题单】图论算法
  • 1584. 连接所有点的最小费用2976. 转换字符串的最小成本 I
    Loading...