Cod sursa(job #1347834)

Utilizator roxana_97Soare Roxana Florentina roxana_97 Data 19 februarie 2015 11:55:56
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#define NMAX 100099
using namespace std;

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

int N, M, T[NMAX];

int gr(int x)
{
    if(T[x]!=x) T[x]=gr(T[x]);
    return T[x];
}

void Reuneste(int x, int y)
{
    T[gr(x)] = gr(y);
}
int main()
{
    f>>N;
    for(int i=1; i<=N; i++) T[i]=i;
    for (int i=1; i<=N; i++)
    {
        int tip,x,y;
        f>>tip>>x>>y;
        if(tip==1)Reuneste(x, y);
        if(tip==2)
        {
            if(gr(x)==gr(y))g<<"DA\n";
                    else g<<"NU\n";
        }
    }
    f.close();g.close();
    return 0;
}