Cod sursa(job #1014893)

Utilizator real11mateftw real11 Data 23 octombrie 2013 17:26:22
Problema Paduri de multimi disjuncte Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int r[100000],n,i,x,y,a,d;
long int m;
int caut(int q)
{
    if(r[q]==q)
    {
        d=q;
        return q;
    }
    else
    {
        r[q]=caut(r[q]);
        return d;
    }
}
int caut2(int q)
{
    if(r[q]==q)
        return q;
    else
        return caut2(r[q]);
}
int main()
{

    f>>n>>m;
    for(i=1;i<=n;i++)
        r[i]=i;
    for(i=1;i<=m;i++)
    {
        f>>a;
        if(a==1)
        {
            f>>x>>y;
            x=caut(x);
            y=caut(y);
            r[x]=r[y];
        }
        else
        {
           f>>x>>y;
           x=caut(x);
           y=caut(y);
           if(x==y)
                g<<"DA"<<'\n';
           else
                g<<"NU"<<'\n';
        }
    }
}