Cod sursa(job #2976435)

Utilizator Vladgiuscavladgiusca Vladgiusca Data 9 februarie 2023 10:16:47
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int NMAX=10e5+5;
int N,M,m;
int parent[NMAX];
int cnt[NMAX];
int root(int x){
    m=x;
    if(parent[x]==x)
        return x;
    return root(parent[x]);
    parent[x]=m;
}
void comasare(int a, int b){
    int ra,rb;
    m=a;
    ra=root(a);
    rb=root(b);
    if(ra==rb)
        return ;
    if(cnt[ra]<cnt[rb])
        swap(ra,rb);
    parent[rb]=ra;
    cnt[ra]+=cnt[rb];
}
void query(int a, int b){
    if(root(a)==root(b))
        out<<"DA\n";
    else
        out<<"NU\n";
    return ;
}
int main()
{
    int i,x,y,c;
    in>>N>>M;
    for(i=1; i<=N; i++){
        parent[i]=i;
        cnt[i]=1;
    }
    for(i=1; i<=M; i++){
        in>>c>>x>>y;
        if(c==1)
            comasare(x,y);
        else
            query(x,y);
    }
    return 0;
}