牛客网算法总结——并查集(一星题)

更新时间:2023-08-02 18:42:34 阅读: 评论:0

⽜客⽹算法总结——并查集(⼀星题)⽬录
背景介绍
加边的⽆向图
这是⼀道很常规的并查集的题 ⽤并查集算法很轻松就找出有⼏个不相交的集合然后解出
#include<iostream>
#include<t>
using namespace std;
孕妇能吃河蚌肉吗
int pre[100005];
int find(int x){
if(pre[x]==x)return x;
return pre[x]=find(pre[x]);
}
inline void merge(int i,int j)
{
pre[find(i)]=find(j);
}
int main()
{
int n,m;
cin>>n>>m;
劳动创造美作文int a,b;
t<int> s;一把锄头一双人
for(int i=0;i<=n;i++)pre[i]=i;
for(int i=0;i<m;i++){
cin>>a>>b;
merge(a,b);
}
for(int i=1;i<=n;i++){
s.inrt(find(i));
}
cout<<s.size()-1<<endl;
return0;
}
Call to your teacher
这道题也是很简单的并查集 在上⼀道题基础上 注意⼀个点就可以了(如果没⼈认识⽼师就不可能联系到⽼师 但是如果⽼师认识别⼈就会把⾃⼰送⼊这个集合 就会误认为联系得到⽼师)把⽼师认识别⼈这个不加⼊集合就⾏。
#include<iostream>
using namespace std;
int pre[55];
int find(int x){
if(pre[x]==x)return x;
我的一天英文return pre[x]=find(pre[x]);
}
inline void merge(int i,int j)
{
pre[find(i)]=find(j);
}
int main()
{
int n,m;零约束
cin>>n>>m;
for(int i=1;i<=n;i++)pre[i]=i;
int a,b;
for(int i=0;i<m;i++){
cin>>a>>b;
if(a==n)continue;//将⽼师认识别⼈去掉
merge(a,b);
}
if(find(1)==find(n))cout<<"Yes"<<endl;
小桥简笔画el cout<<"No"<<endl;
return0;
}
任意点
这道题在并查集基础上加上本题的特⾊ 当两个点的x轴或y轴相等就说明能⼀次到达 就加⼊集合就⾏
初级教师
#include<iostream>
#include<t>
using namespace std;
struct point{
int x,y;
};
point points[105];
int pre[105];
t<int> s;
int find(int x){
if(pre[x]==x)return x;
return pre[x]=find(pre[x]);
}
void merge(int i,int j){
pre[find(i)]=find(j);
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++){
pre[i]=i;
cin>>points[i].x>>points[i].y;
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(points[i].x==points[j].x||points[i].y==points[j].y)
merge(i,j);
冷冻肉怎么快速解冻
}
}
for(int i=0;i<n;i++)s.inrt(find(i));
cout<<s.size()-1<<endl;
return0;
}
⽩⾊相簿

本文发布于:2023-08-02 18:42:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1126939.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查集   基础   说明   联系   误认为
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图