Cod sursa(job #3332955)

Utilizator Aditz8Cozma Daniel Adrian Aditz8 Data 10 ianuarie 2026 09:56:21
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int n,q,x,y,cer,t[100001],marime[100001];

int findt(int u)
{
    if(t[u]==u)return u;
    return t[u]=findt(t[u]);
}

void merget(int u,int v)
{
    u=findt(u);
    v=findt(v);
    if(u==v)return;
    if(marime[u]<marime[v])swap(u,v);
    t[v]=u;
    marime[u]+=marime[v];
}

int main()
{
    fin>>n>>q;
    for(int i=1;i<=n;i++)
    {
        t[i]=i;
    }
    while(q--)
    {
        fin>>cer>>x>>y;
        if(cer==1)
        {
            merget(x,y);
        }
        if(cer==2)
        {
            ///fout<<findt(x)<<' '<<findt(y)<<' ';
            if(findt(x)==findt(y))fout<<"DA"<<endl;
            else fout<<"NU"<<endl;
        }

    }
    return 0;
}