Cod sursa(job #1411188)

Utilizator pincucatalinPincu Catalin pincucatalin Data 31 martie 2015 15:20:49
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>

using namespace std;
FILE *in=fopen ("disjoint.in","r");
FILE *out=fopen ("disjoint.out","w");
int n,m,t[100005];
int radacina (int x)
{
    if (t[x]==0) return x;
    t[x]=radacina (t[x]);
    return t[x];
}

void unire (int x,int y)
{
    int rx=radacina(x),ry=radacina(y);
    t[rx]=ry;
}
bool gasire (int x,int y)
{
    return radacina(x)==radacina(y);
}
void citire ()
{
    fscanf (in,"%d%d",&n,&m);
    for (int i=1;i<=m;i++)
    {
        int p,x,y;
        fscanf (in,"%d%d%d",&p,&x,&y);
        if (p==1)
        {
            unire (x,y);
        }
        else
        {
            if (gasire(x,y))
                fprintf (out,"DA\n");
                else fprintf (out,"NU\n");
        }
    }
}
int main()
{
    citire();
    return 0;
}