数据结构——并查集

AcWing - 算法基础课

Acwing------合并集合

代码如下:

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;
#define fs first
#define sc second
#define endl '\n'
#define all(x) x.begin(), x.end()
typedef long long ll;
typedef pair<int, int> PII;

const int N = 1e5+10;

int p[N];

int find(int x)
{
	if(x==p[x])return x;//找到根了x==p[x]
	//否则压缩路径 把节点直接指向老祖宗(优化)
	else p[x]=find(p[x]);
}

void solve(){
    int n,m;
    cin>>n>>m;
    
    for(int i=1;i<=n;i++)p[i]=i;//初始化(每个人都是自己的祖宗)
    
    for(int i=0;i<m;i++)
    {
    	char x;cin>>x;
    	int a,b;
    	if(x=='M')
    	{
    		cin>>a>>b;
    		p[find(a)]=find(b);//两个集合合并
    	}
    	else{
    		cin>>a>>b;
    		if(find(a)==find(b))puts("Yes");
    		else puts("No");
    	}
    }
}

int main(){
	
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(0);

    int t;
    t=1;

    while (t--)
    {
        solve();
    }
    
    return 0;
}
相关推荐
uhakadotcom1 小时前
使用NLTK和jieba进行中文情感分析的简单教程
算法·面试·github
CodeJourney.1 小时前
利用DeepSeek实现文档到流程图的高效转换:技术应用与实践探索
数据库·人工智能·算法·excel·流程图
电子连接器CAE与高频分析1 小时前
MATLAB求和∑怎么用?
人工智能·算法·matlab
studyer_domi2 小时前
Matlab 分数阶PID控制永磁同步电机
开发语言·算法·matlab
六bring个六2 小时前
C++双链表介绍及实现
开发语言·数据结构·c++
CQU_JIAKE2 小时前
4.12~4.14【Q】cv homework6
算法
张立龙6663 小时前
单链表各种操作实现(数据结构C语言多文件编写)
c语言·开发语言·数据结构
Susea&3 小时前
数据结构初阶:栈
c语言·数据结构
mvufi3 小时前
day29 第八章 贪心算法 part03
算法·贪心算法
知星小度S3 小时前
算法训练之贪心
算法