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

济铁工程建设集团公司官方网站做牙厂的网站

济铁工程建设集团公司官方网站,做牙厂的网站,长沙做网站开发大概价格,wordpress 商务主题1、题目描述: 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不含其他…

1、题目描述:

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。

省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。

给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。

返回矩阵中 省份 的数量。

示例 1:

输入:isConnected = [[1,1,0],[1,1,0],[0,0,1]]
输出:2

示例 2:

输入:isConnected = [[1,0,0],[0,1,0],[0,0,1]]
输出:3

提示:

  • 1 <= n <= 200
  • n == isConnected.length
  • n == isConnected[i].length
  • isConnected[i][j] 为 1 或 0
  • isConnected[i][i] == 1
  • isConnected[i][j] == isConnected[j][i]

2、代码:

#include <vector>
#include <functional>  // 用于lambda表达式using namespace std;class Solution {
public:int findCircleNum(vector<vector<int>>& isConnected) {// 获取城市数量int n = isConnected.size();if (n == 0) return 0;// 初始化并查集数据结构vector<int> parent(n);   // parent[i]表示i的父节点vector<int> rank(n, 1); // rank[i]表示以i为根的树的高度(用于按秩合并)// 初始时每个城市自成一类,父节点指向自己for (int i = 0; i < n; ++i) {parent[i] = i;}// 查找函数(带路径压缩)// 作用:找到x的根节点,并将路径上的节点直接指向根(降低后续查找复杂度)function<int(int)> find = [&](int x) {if (parent[x] != x) {parent[x] = find(parent[x]);  // 递归压缩路径}return parent[x];};// 合并函数(按秩合并优化)// 作用:将x和y所在的集合合并为一个集合auto unite = [&](int x, int y) {int rootX = find(x);  // 找到x的根int rootY = find(y);  // 找到y的根// 关键修复:必须检查根是否相同,否则会导致错误合并if (rootX == rootY) return;  // 已在同一集合中,无需合并// 按秩合并:将小树合并到大树下以保持平衡if (rank[rootX] < rank[rootY]) {parent[rootX] = rootY;  // 将rootX的父设为rootY} else {parent[rootY] = rootX;  // 将rootY的父设为rootX// 若两树高度相同,合并后树的高度+1if (rank[rootX] == rank[rootY]) {++rank[rootX];  // 仅在两树同高时增加秩}}};// 遍历邻接矩阵的上三角部分(利用对称性避免重复处理)for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {  // 仅处理i<j的情况if (isConnected[i][j] == 1) {  // 发现相连城市unite(i, j);  // 合并集合}}}// 统计连通分量数量(即根节点数量)int provinces = 0;for (int i = 0; i < n; ++i) {// 根节点的特征是:find(i) == iif (find(i) == i) {++provinces;}}return provinces;}
};

3、解题思路:

注:该题建议使用并查集的思想去解决,因为并查集就是用来解决与动态连通性相关的问题

  1. 初始化并查集:每个城市初始时独立,父节点指向自己,秩初始化为1。
  2. 查找函数(带路径压缩)​:递归查找根节点,并将路径上的节点直接连接到根节点,减少后续查找时间。
  3. 合并函数(按秩合并)​:根据秩的大小合并两个集合,保持树的平衡性,避免树过高。
  4. 遍历邻接矩阵:仅处理上三角部分,避免重复合并相连的城市对。
  5. 统计连通分量:遍历所有城市,统计根节点的数量,每个根节点代表一个省份。

文章转载自:

http://vOKciCuf.gjtdp.cn
http://xukdRJxp.gjtdp.cn
http://Pi6m8ky9.gjtdp.cn
http://LytUkmXm.gjtdp.cn
http://NseTb6XN.gjtdp.cn
http://sXmDfb5m.gjtdp.cn
http://NhCnxuRO.gjtdp.cn
http://MEEiUjsw.gjtdp.cn
http://gbN0gpQ7.gjtdp.cn
http://ETQY7fNn.gjtdp.cn
http://wgdLsYWh.gjtdp.cn
http://25DbnV5B.gjtdp.cn
http://3FMfcxeq.gjtdp.cn
http://f8CpFB3a.gjtdp.cn
http://ugD1hOZE.gjtdp.cn
http://47u1Sq11.gjtdp.cn
http://BIHgNyhR.gjtdp.cn
http://d9OXV0KD.gjtdp.cn
http://Cn2m7cuF.gjtdp.cn
http://FYg1H7fL.gjtdp.cn
http://tKp3HEjB.gjtdp.cn
http://1eq54W6F.gjtdp.cn
http://gKkQdaDA.gjtdp.cn
http://bUKoECOX.gjtdp.cn
http://MRWXPVCa.gjtdp.cn
http://DhcQhRkd.gjtdp.cn
http://FFvsRQ1F.gjtdp.cn
http://eQX1NI95.gjtdp.cn
http://E7TpMXNx.gjtdp.cn
http://kwYYPt57.gjtdp.cn
http://www.dtcms.com/wzjs/656186.html

相关文章:

  • 做网站建设的工资高吗属于网站建设过程规划和准备阶段的是
  • 四川遂宁做网站的公司C wordpress 分类
  • wordpress整站数据转移百度首页排名优化哪家专业
  • 如何做cpa单页网站百度官方营销推广平台
  • 学生自做网站优秀作品响应式企业网站设计
  • 百度网站大全站内优化网站怎么做
  • 网站做了301怎么查看跳转前网站国外网页设计网站
  • 在线看seo网站哈尔滨建设网官方网站
  • 专业网站设计公司推荐app制作开发公司
  • 山东省建设部继续教育网站怎么来维护已经上传的网站呢
  • 襄阳网站开发肇庆 网站建设 骏域网站
  • 北京建立公司网站网站建设 康盛设计
  • 什么是企业网站pv深圳sem优化
  • 平面设计师兼职网站中国杭州官网
  • 废品回收在哪个网站做效果好七牛云动静分离wordpress
  • 在哪家网站上可以找到加工活做互联网舆情忻州
  • 黑镜wordpress主题网站优化免费软件
  • 那里做网站用手机制作网站的软件
  • 长沙企业网站制作哪家好门户网站微信服务号建设方案
  • 池州海绵城市建设官方网站个体工商户注册流程
  • 企业网站有什么功能阿里巴巴全球速卖通
  • ppt模板免费下载哪个网站好怎么用html做百度首页网站
  • 北京手机网站搭建多少钱vip电影网站建设
  • 网站速度对seo的影响wordpress 源码交付
  • 郑州企业做网站h汉狮c2c网站制作
  • 建一个定制网站要多少钱wordpress游客发言
  • 学做彩票网站有哪些做网站的人叫什么
  • 企业建设网站 入账深圳平价的专业建站公司
  • 网站建设费计入那个科目codecanyon – wordpress脚本插件完整打包
  • 网站建设超链接制作手做网站