Cod sursa(job #2696164)

Utilizator Teod12ALEXANDRESCU teodora Teod12 Data 15 ianuarie 2021 15:04:27
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>

using namespace std;

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

int sef[100001];

int sefsuprem(int x)
{
    if(sef[x]==x)
        return x;
    else
        return sef[x]=sefsuprem(sef[x]);
}

void unire(int x, int y)
{
    int sefx,sefy;
    sefx=sefsuprem(x);
    sefy=sefsuprem(y);
    sef[sefx]=sefy;
}




int main()
{
    int n,q,tip,i,x,y;
    cin>>n>>q;
    for(i=1;i<=n;i++)
        sef[i]=i;
    for(i=1;i<=q;i++)
    {
        cin>>tip>>x>>y;
        if(tip==2)
            if(sefsuprem(x)==sefsuprem(y))
                cout<<"DA\n";
            else
                cout<<"NU\n";
        else
            unire(x,y);
    }
    return 0;
}