Cod sursa(job #3141132)

Utilizator matei0000Neacsu Matei matei0000 Data 12 iulie 2023 17:19:00
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>

using namespace std;

ifstream cin("disjoint.in");
ofstream cout("disjoint.out");

int sz[100005];
int tata[100005];

int repr(int x)
{
    if(x==tata[x])
        return x;
    return x=repr(tata[x]);
}

void update(int a, int b)
{
    int x=repr(a);
    int y=repr(b);
    if(sz[x]>sz[y])
        swap(x,y);
    tata[x]=y;
    sz[y]+=sz[x];
}

string query(int a, int b)
{
    if(repr(a)==repr(b))
        return "DA";
    return "NU";
}




int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        tata[i]=i,sz[i]=1;
    for(int i=0;i<m;i++)
    {
        int a,b,c;
        cin>>a>>b>>c;
        if(a==1)
            update(b,c);
        else
            cout<<query(b,c)<<'\n';
    }
}