Cod sursa(job #1932811)

Utilizator nartorrewrew narto Data 20 martie 2017 09:49:15
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#define nmax 100004
using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

int t[nmax], n, m, op;

int rad(int x)
{
    while(t[x]>0)
        x=t[x];
    return x;
}
void leaga(int a,int b)
{
    t[a]+=t[b];
    t[b]=a;
}

int main()
{ int i, rx, ry, x, y;
    f>>n>>m;
    for(i=1;i<=n;i++)
        t[i]=-1;
    for(i=1;i<=m;i++){
        f>>op>>x>>y;
       rx=rad(x);
       ry=rad(y);
       if(op==2){
        if(rx==ry)
            g<<"DA"<<'\n';
        else
            g<<"NU"<<'\n';
       }
       else
       {
           if(t[x]<t[y])
            leaga(y,x);
           else
            leaga(x,y);
       }
    }


}