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

力扣2492:并查集/dfs

方法一:并查集。如果不仔细读题,可能会想着把每一个一维数组下标为2的位置进行排序即可。但这是不行的。因为有可能有一些节点在其它集合当中。如果这些节点之间存在一个边权值比节点1所在集合的最小边权值还要小,那么求出来的答案就是错的。

由于城市1与城市n之间至少有一条路径,那么也就意味着城市1与城市n是在同一个集合中。我们只需要求出这个集合中的边权值的最小值即可。

class Solution
{
public:int find(vector<int>& father, int u){return u == father[u] ? u : father[u] = find(father, father[u]);}void join(vector<int>& father, int u, int v){u = find(father, u);v = find(father, v);if (u == v) return;father[v] = u;}int minScore(int n, vector<vector<int>>& roads){vector<int>father(n + 1);for (int i = 1; i <= n; i++){father[i] = i;}for (auto p : roads){join(father, p[0], p[1]);}unordered_map<int, int>mp;//mp.first:根节点编号  mp.second:该集合的边权最小值for (auto p : roads){mp[find(father, p[0])] = INT_MAX;}for (auto p : roads){if (find(father, n) == find(father, p[0])){if (p[2] < mp[find(father, p[0])]){mp[find(father, p[0])] = p[2];}}}return mp[find(father, n)];}
};

并查集的模板,见:并查集(力扣1971)-CSDN博客

方法二:深度优先搜索

由于题目说了确保节点1与节点n之间存在至少一条路径,因此只需要对节点1所在的集合进行深度优先搜索即可。在深度优先搜索的过程中维护边权最小值。

在深搜之前,我们需要构建一个邻接矩阵进行节点的存储。

class Solution
{
public:unordered_map<int, vector<pair<int, int>>>graph;//第一个int,表示起点,第二个int表示终点,第三个int表示边权值int ans = INT_MAX;vector<bool>vis;void dfs(int x){vis[x] = true;for (auto it : graph[x]){ans = min(ans, it.second);if (!vis[it.first]) dfs(it.first);}}int minScore(int n, vector<vector<int>>& roads){for (auto p : roads){graph[p[0]].push_back({ p[1],p[2] });graph[p[1]].push_back({ p[0],p[2] });}vis = vector<bool>(n + 1, false);dfs(1);return ans;}
};

http://www.xdnf.cn/news/845.html

相关文章:

  • Compose Multiplatform Android Logcat工具
  • (七)深入了解AVFoundation-采集:采集系统架构与 AVCaptureSession 全面梳理
  • 4G专网赋能工业智联,助力数字化转型新升级
  • 百度暑期实习岗位超3000个,AI相关岗位占比87%,近屿智能携AIGC课程加速人才输出
  • 加油站小程序实战教程12显示会员信息
  • 创意Python爱心代码分享
  • 理性决策与情绪偏差
  • C++(进阶) 第12特殊类设计
  • RESTful学习笔记(二)---简单网页前后端springboot项目搭建
  • kafka 分区分散在不同服务器上的原理
  • 衡石科技ChatBI--飞书数据问答机器人配置详解(附具体操作路径和截图)
  • 逻辑回归(Logistic Regression)
  • 解决 Arduino IDE 2.3.6 在 Windows 上无法启动:缺少 Documents 文件夹与注册表路径错误
  • javaSE.哈希表
  • 消息中间件RabbitMQ:简要介绍及其Windows安装流程
  • C++初阶——模板
  • C#—Lazy<T> 类型(延迟初始化/懒加载模式)
  • (cvpr2025) LSNet: See Large, Focus Small
  • Java 设计模式心法之第3篇 - 总纲:三大流派与导航地图
  • 使用json_repair修复大模型的json输出错误
  • 小天互连:助力信创产业的国产化即时通讯系统
  • alibaba-JSONObject使用
  • 无人船 | 图解基于PID控制的路径跟踪算法(以全驱动无人艇WAMV为例)
  • FlaskRestfulAPI接口的初步认识
  • 文件包含漏洞,目录遍历漏洞,CSRF,SSRF
  • iFable,AI角色扮演互动平台,自动生成沉浸式故事游戏
  • Yocto项目实战教程‑第6章‑Poky‑镜像菜谱‑机器配置文件‑发行版配置文件‑QEMU
  • Pandas高级功能
  • 项目二 - 任务7:统计一组学生成绩
  • 2021-11-14 C++三七二十一数