Cod sursa(job #2937370)

Utilizator CondoracheAlexandruCondorache Alexandru CondoracheAlexandru Data 10 noiembrie 2022 11:20:21
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int parent[100001], rang[100001];
int find(int x)
{
    if(parent[x]==x)
        return x;
    return parent[x]=find(parent[x]);
}
void union1(int x, int y)
{
    if(rang[x]>rang[y])
        parent[y]=x, rang[x]+=rang[y];
    else
        parent[x]=y, rang[y]+=rang[x];
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int n,q,cod,a,b;
    f >> n >> q;
    for(int i=1; i<=n; i++){
    	parent[i]=i; 
		rang[i]=1; 	
	}
    while(q--){
        f >> cod >> a >> b;
        if(cod==1)
            union1(find(a),find(b));
        else{
            if(find(a)==find(b))
                g << "DA" << endl;
            else
                g << "NU" << endl;
        }
    }
    return 0;
}