news 2026/6/9 18:39:39

代码随想录算法训练营第四十八天 | 卡码网108. 多余的边、卡码网109. 多余的边II

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录算法训练营第四十八天 | 卡码网108. 多余的边、卡码网109. 多余的边II

代码随想录算法训练营第四十八天任务

  • 卡码网108. 多余的边
  • 卡码网109. 多余的边II

卡码网108. 多余的边

题目链接:卡码网108. 多余的边
思路:并查集的join()函数是将边加入并查集中,从这个入手,u 和 v 寻根之后如果相等,说明是多余的边。

#include<iostream>#include<vector>usingnamespacestd;intn;vector<int>father(1001,0);voidinit(){for(inti=0;i<n;++i){father[i]=i;}}intfind(intx){if(x==father[x])returnx;elsereturnfather[x]=find(father[x]);}voidjoin(intu,intv){introotU=find(u);introotV=find(v);if(rootU==rootV){cout<<u<<" "<<v<<endl;return;}father[rootV]=rootU;}intmain(){cin>>n;init();for(inti=0;i<n;++i){ints,t;cin>>s>>t;join(s,t);}return0;}

也可以写出完整的join()函数和isSame()函数,在主函数中判断,如果isSame()返回true,打印输出并返回,否则就用join()函数加边。

卡码网109. 多余的边II

题目链接:卡码网109. 多余的边II
看题解了!
分析:

#include<iostream>#include<vector>usingnamespacestd;intn;vector<int>father(1001,0);voidinit(){for(inti=0;i<n;++i){father[i]=i;}}intfind(intx){if(x==father[x])returnx;elsereturnfather[x]=find(father[x]);}voidjoin(intu,intv){u=find(u);v=find(v);if(u==v)return;father[v]=u;}boolisSame(intu,intv){u=find(u);v=find(v);returnu==v;}boolisTreeDeleteEdge(constvector<vector<int>>&edges,intdeleteEdge){init();for(inti=0;i<edges.size();++i){if(i==deleteEdge)continue;// 不加入并查集intu=find(edges[i][0]);intv=find(edges[i][1]);if(u==v)returnfalse;elsejoin(edges[i][0],edges[i][1]);}returntrue;}intmain(){cin>>n;init();vector<vector<int>>edges(n,vector<int>(2,0));// 存储边的信息vector<int>indeg(n+1,0);// 存储入度个数for(inti=0;i<n;++i){cin>>edges[i][0]>>edges[i][1];indeg[edges[i][1]]++;// 统计入度个数}// 找出入度为2的边,倒叙存储, 方便找出最后出现的边vector<int>vec;for(inti=n-1;i>=0;--i){if(indeg[edges[i][1]]==2){vec.push_back(i);// 第 i 条边}}// 情况1:有入度为2的边if(vec.size()>0){if(isTreeDeleteEdge(edges,vec[0])){cout<<edges[vec[0]][0]<<" "<<edges[vec[0]][1]<<endl;return0;}else{cout<<edges[vec[1]][0]<<" "<<edges[vec[1]][1]<<endl;return0;}}// 情况2:没有入度为2的边 , 检查是否成环for(inti=0;i<edges.size();++i){intu=find(edges[i][0]);intv=find(edges[i][1]);if(u==v){cout<<edges[i][0]<<" "<<edges[i][1]<<endl;return0;}elsejoin(edges[i][0],edges[i][1]);}return0;}

分析、拆解,分情况讨论!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 4:34:55

麻雀算法及其改进在机械臂轨迹规划中的应用探索

麻雀算法加改进麻雀&#xff0c;混沌映射&#xff0c;机械臂轨迹&#xff0c;配合3-5-3多项式规划&#xff0c;关节空间下轨迹规划&#xff0c;可用于六自由度&#xff0c;五自由度等机械臂&#xff0c;替换自己的DH即可在机器人领域&#xff0c;机械臂的轨迹规划一直是核心问题…

作者头像 李华
网站建设 2026/6/7 7:26:22

深度学习毕设项目:基于机器学习的蘑菇毒性预测分析及应用实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/7 11:08:29

深度学习计算机毕设之基于机器学习的蘑菇毒性预测分析及应用实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/7 12:00:28

【计算机毕业设计案例】基于随机森林的贷款可能性预测系统实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/7 11:50:46

2025必备!专科生毕业论文写作TOP10 AI论文写作软件测评

2025必备&#xff01;专科生毕业论文写作TOP10 AI论文写作软件测评 2025年专科生论文写作工具测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着人工智能技术的不断发展&#xff0c;越来越多的专科生开始借助AI论文写作软件来提升毕业论文的完成效率与质量。然而&#…

作者头像 李华