作业介绍

并查集模板

#include<iostream>
using namespace std;
const int MAXN = 10010;
int parent[MAXN];

void init(int n){
	for(int i = 1 ; i < n ; i++){
		parent[i] = i ;
	}
}

int Find(int x ){
	if(parent[x]==x){
		return x;
	}else{
		return Find(parent[x]);
	}
}

void Union(int x , int y){
	int rootx = Find(x);
	int rooty = Find(y);
	if(rootx != rooty){
		parent[rootx] = rooty;
	}
}

int main(){
	int n , m ;
	cin >> n  >> m ;
	init(n);
	int z , x , y;
	for(int i = 1 ; i<= m ; i++){
		cin >> z >> x >> y;
		if(z == 1){
			Union(x,y);
		}else{
			if(Find(x) == Find(y)){
				cout << "Y" <<endl;
			}else{
				cout << "N" <<endl;
			}
		}
	}
	return 0;
}
状态
已结束
题目
2
开始时间
2025-6-15 0:00
截止时间
2025-6-23 23:59
可延期
24 小时