Cod sursa(job #1243646)

Utilizator FeriCsiki Francisc Alexandru Feri Data 16 octombrie 2014 09:39:47
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int t[100001];

int rad(int x)
{
    if(t[x]==0)
        return x;
    t[x]=rad(t[x]);
    return t[x];
}

void unite(int x,int y)
{
    int rx=rad(x),ry=rad(y);
    t[rx]=ry;
}

int findv(int x,int y)
{
    if(rad(x)==rad(y))
        return 1;
    else
        return 0;
}

int main()
{
    int n,m,i,a,b,x,val;
    in>>n>>m;
    while(m--)
    {
        in>>x>>a>>b;
        if(x==1)
            unite(a,b);
        else
        {
            val=findv(a,b);
            if(val==0)
                out<<"NU"<<"\n";
            else
                out<<"DA"<<"\n";
        }
    }
    return 0;
}