Cod sursa(job #1337937)

Utilizator LucacelRazvanLucacel Razvan LucacelRazvan Data 9 februarie 2015 17:28:41
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
#define Dmax 100200
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int T[Dmax],Rng[Dmax];

int Find(int x)
{
    int R;
    R=x;
    while(T[R]!=R) R=T[R];
    return R;
}

void Union(int x, int y)
{
    if(x!=y)
        T[x]=y;
}

int main()
{

    int N,M,op,x,y,i;
    fin>>N>>M;
    for(i=1;i<=N;i++){T[i]=i; Rng[i]=1;}
    for(i=1;i<=M;i++)
    {
        fin>>op>>x>>y;
        if(op==2)
        {
            if(Find(x)==Find(y)) fout<<"DA"<<'\n';
            else fout<<"NU"<<'\n';
        }
        else
        {
            Union(Find(x),Find(y));
        }
    }
    return 0;
}