Cod sursa(job #1249097)

Utilizator hasmasandragosHasmasan Dragos hasmasandragos Data 26 octombrie 2014 15:09:37
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
using namespace std;
ifstream  cin("disjoint.in");
ofstream cout("disjoint.out");

int Root[100013];
int n,i,j,m,a,b,op;

int Find_root(int nod)
{
 if (Root[nod]==nod) return nod;
                else return Find_root(Root[nod]);
}

void unite ( int a, int b)
{
 if (a!=b) Root[b]=a;
}

int main()
{
 cin>>n>>m;
 for (i=1;i<=n;++i) Root[i]=i;
 while(m--)
   {
    cin>>op>>a>>b;
    int r1=Find_root(a);
    int r2=Find_root(b);
    if (op==1) unite(r1,r2);
    if (op==2){
               if (r1==r2) cout<<"DA\n";
                      else cout<<"NU\n";
               }
   }
return 0;
}