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

图论-并查集

1.
模板题:多余的边
思路:n条边n个点。类似于克鲁斯卡尔,加边的同时用并查集判断边的两端点是否同根,若同根,则要删除该边。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=2000;
int main()
{int n;cin>>n;vector<int>fa(n+1);for(int i=1;i<=n;i++)fa[i]=i;auto find=[&](auto &&find,int x)->int{if(fa[x]==x)return x;return fa[x]=find(find,fa[x]);};auto join=[&](int x,int y)->int{int xx=find(find,x);int yy=find(find,y);if(xx==yy)return 1;fa[xx]=yy;return 0;};int a,b;for(int i=0;i<n;i++){int s,t;cin>>s>>t;if(join(s,t)){a=s;b=t;}}cout<<a<<' '<<b<<'\n';
}

2.
多余的边(二)
思路:n条边n个点。与模板题不同的是该图是有向图。
分为三种情况(见力扣评论区):
(1)每个点入度是1,有一个有向环。解决:同模板题,随便删除环上一边。
(2)存在一个入度为2的点,无有向环。解决:随便删除指向该点的两条边中的其中一条。
(3)既存在有向环,又存在一个入度为2的点(肯定在环上)。解决:肯定要删除环上指向入度为2点的那条边,用并查集。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=2000;
vector<int>v[N];
int main()
{int n;cin>>n;vector<int>fa(n+1);vector<int>in(n+1);for(int i=1;i<=n;i++)fa[i]=i;auto find=[&](auto &&find,int x)->int{if(fa[x]==x)return x;return fa[x]=find(find,fa[x]);};auto join=[&](int x,int y)->int{int xx=find(find,x);int yy=find(find,y);if(xx==yy)return 1;fa[xx]=yy;return 0;};int a,b;int f=0;for(int i=0;i<n;i++){int s,t;cin>>s>>t;if(f)continue;//搞定入度为2的点就成功了v[t].push_back(s);//反着存,方便找指向入度为2点的边in[t]++;if(in[t]>1){f=1;if(join(s,t))a=s,b=t;else a=v[t][0],b=t;continue;}if(join(s,t)){a=s;b=t;}}cout<<a<<' '<<b<<'\n';
}
http://www.jsqmd.com/news/290341/

相关文章:

  • 特价股票与公司长期气候适应能力的关系分析
  • .nvue页面实现画笔绘制功能,用原生html导入nvue页面使用还可以截图(画笔 清空 橡皮擦 改颜色 禁用画笔 截图-是视频画面加绘制合成一张图片截图)-我花80块钱找淘宝都没弄出来,自己写的
  • 搞懂大数据CAP定理,为你的职业发展添砖加瓦
  • WebGL Shader性能优化
  • 手机外壳平面度用什么设备检测快?SIMSCAN精细模式+自动报告方案推荐
  • 建筑BIM模型怎么从实体建筑生成?三维扫描仪推荐TrackScan-Sharp!
  • HBase与Quarkus:Kubernetes原生Java
  • 详细介绍:《 Linux 点滴漫谈: 四 》文件权限与用户管理
  • 阿里拟析平头哥以赴市:论芯片分拆之战略深意
  • 多边形剪裁算法
  • 铸件毛坯余量如何精准测量分析?自动生成偏差色谱图产品推荐
  • 2026年深圳APP定制开发外包公司权威榜单发布
  • 量具测不准太慢?模具精度检查难题破解!思看3DeVOK MT+Polyworks方案推荐
  • 提升大数据处理效率,聚焦 ETL 核心策略
  • 2026必备!继续教育必看!TOP10一键生成论文工具深度测评
  • 大数据领域数据服务在旅游科技领域的应用探索
  • URC 分流是什么意思 + 为什么必须做 + ESP-IDF 可直接用的代码框架
  • ESP_ERR_OTA_VALIDATE_FAILED 的意思非常明确
  • 结论是:不是单一问题,你这边至少有 2 类崩溃,而且都和 ML307 的 AT/UART收发链路 + 异常数据处理 强相关
  • Golang 与 Kubernetes:实现自动化备份与恢复
  • Lua基础语法(下)
  • 结课设计.
  • 学长亲荐2026 MBA论文写作TOP10 AI论文网站
  • 科研AI模型复现难到崩溃?5个关键注意事项,一次复现成功!
  • 跨学科搞不定?AI+材料科学案例拆解,实验效率翻10倍!
  • 6.1.1.1 大材料方法论与实践指南-Spark/Flink 任务开发规范
  • Postgres常见命令
  • 训练时一套,线上跑一套?离线训练与在线服务数据一致性这坑,我替你踩过了
  • 08 判断语句
  • 文件或者文件夹存在但是删除提示项目文件不存在解决方法