Cod sursa(job #825083)

Utilizator lucian666Vasilut Lucian lucian666 Data 27 noiembrie 2012 14:20:15
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb



#include<fstream>
#define NN 100010

using namespace std;
ofstream out("disjoint.out");

int T[NN],n,m;

void read();
void preprocesez();
void unire(int x,int y);
int find(int x);

int main()
{

    read();
    return 0;
}

void preprocesez()
{

    for(int i=1;i<=n;i++)
        T[i]=i;
}

int find(int x)
{

    if ( x != T[x])
        T[x]= find (T[x]);
        return T[x];

}


void unire(int x,int y)
{

    T[find(x)] = find(y);

}

void read()
{

    ifstream in("disjoint.in");
    in>>n>>m;
    preprocesez();
    for(int cod,x,y ; m ; --m )
    {

        in>>cod>>x>>y;
        if ( cod == 1)
            unire(x,y);
            else
            if (find(x) == find(y))
                out<<"DA"<<'\n';
                else
                out<<"NU"<<'\n';


    }
}