Cod sursa(job #2679060)

Utilizator marcumihaiMarcu Mihai marcumihai Data 29 noiembrie 2020 15:29:59
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f ("disjoint.in");
ofstream g ("disjoint.out");
int n , m;
int t[100005];

void Union (int x , int y)
{
    t[x]=y;
}

int Find(int x)
{
    int rad=x;
    while(t[rad]!=0)
    {
        rad=t[rad];
    }
    while(t[x]!=0)
    {
        int aux=t[x];
        t[x]=rad;
        x=aux;
    }
    return rad;

}
int main()
{
    f>>n>>m;
    for(int i=1;i<=m;++i)
    {
        int op,a,b;
        f>>op>>a>>b;
        if(op==1)
        {
            int r1=Find(a);
            int r2=Find(b);
            if(r1!=r2)
                Union(r1,r2);

        }
        else
           g << ((Find(a) == Find(b))? "DA":"NU")<<"\n";

    }
    return 0;
}