当前位置: 首页 > news >正文

[H最短路] lc2959. 关闭分部的可行集合数目(Floyd最短路+二进制枚举+模板题)

文章目录

    • 1. 题目来源
    • 2. 题目解析

1. 题目来源

链接:2959. 关闭分部的可行集合数目

2. 题目解析

看了看题好像还没啥思路,结果一看数据范围,好家伙…n 最大就 10 啊,那不直接闭眼直接 Floyd+枚举所有情况即可吗???

果然算法评级只有 6…只需要熟练掌握数据结构即可。
在这里插入图片描述
坑点

  • 最终要保持连通,需要特殊判断一下 在这里 WA 一次
  • 无向图建双向边

  • 时间复杂度 O ( 2 n ∗ n 3 ) O(2^n*n^3) O(2nn3)
  • 空间复杂度 O ( n 2 ) O(n^2) O(n2)

class Solution {
public:int numberOfSets(int n, int maxDistance, vector<vector<int>>& roads) {int r = roads.size();// 2进制枚举int res = 0;vector<bool> del(n);for (int i = 0; i < 1 << n; i ++ ) {for (int j = 0; j < n; j ++ ) del[j] = false;for (int j = 0; j < n; j ++ ) if ((i >> j) & 1) del[j] = true;// floyd 建图int d[n][n]; memset(d, 0x3f, sizeof d);for (int j = 0; j < n; j ++ ) d[j][j] = 0;for (int j = 0; j < roads.size(); j ++ ) {int x = roads[j][0], y = roads[j][1], w = roads[j][2];if (del[x] || del[y]) continue;d[x][y] = min(d[x][y], w);d[y][x] = min(d[y][x], w);}// 最短路计算for (int j = 0; j < n; j ++ )for (int k = 0; k < n; k ++ )for (int m = 0; m < n; m ++ )d[k][m] = min(d[k][m], d[k][j] + d[j][m]);// 校验int check = 1;for (int j = 0; j < n; j ++ ) {for (int k = 0; k < n; k ++ ) {if (del[j] || del[k]) continue;if (d[j][k] == 0x3f3f3f3f || d[j][k] > maxDistance) check = 0;}}res += check;}return res;}
};
http://www.lryc.cn/news/402306.html

相关文章:

  • pyinstaller用法详解3
  • 养猫新手不会挑智能猫砂盆?2024最新挑选干货分享!
  • 上海理工大学24计算机考研考情分析!初复试分值比55:45,复试逆袭人数不算多!
  • Pandas库学习之DataFrame.drop()函数
  • WHAT - 介绍一个不太一样的 UI 组件库 shadcn/ui
  • python--实验 11 模块
  • Vue3+Vite+TS+Axios整合详细教程
  • 【深度学习入门篇 ⑨】循环神经网络实战
  • 宝塔安装RabbitMq教程
  • 韦东山嵌入式linux系列-驱动进化之路:设备树的引入及简明教程
  • 长轮询(Long Polling)实现原理和java代码示例
  • OWASP 移动应用 2024 十大安全风险
  • Qt界面假死原因
  • python调用MATLAB出错matlab.engine.MatlabExecutionError无法调用MATLAB函数报错
  • [GXYCTF2019]Ping Ping Ping1
  • 成为git砖家(1): author 和 committer 的区别
  • Lianwei 安全周报|2024.07.15
  • Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git、gdb)
  • Git使用介绍教程
  • STM32的TIM1之PWM互补输出_死区时间和刹车配置
  • C++复习的长文指南
  • 深入了解MySQL文件排序
  • 【JAVA基础】反射
  • 贪心算法(2024/7/16)
  • Python 在Word表格中插入、删除行或列
  • Java二十三种设计模式-单例模式(1/23)
  • Unity动画系统(3)---融合树
  • sqlalchemy.orm中validates对两个字段进行联合校验
  • 【ROS2】高级:解锁 Fast DDS 中间件的潜力 [社区贡献]
  • VirtualBox虚拟机与主机互传文件的方法