Cod sursa(job #2098175)

Utilizator eduardandrei20Nechifor Eduard Andrei eduardandrei20 Data 2 ianuarie 2018 15:15:03
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");

int t[100001],rang[100001];

int root(int nod)
{
 int next , R= nod ;
 while(t[R]!=R)R=t[R];

 // in R am radacina

 while(t[nod]!=nod)
 {
     next=t[nod];
     t[nod]=R;
     nod = next;
  }
 return R ;
}

void unite(int x , int y )
{
    t[y]=x;
    rang[x]+=y;
}

int main()
{
 int n , m , op , i;
 in >> n >> m ;
  for ( int i = 1 ; i<= n ; ++i)
    {
        rang[i]=1;
        t[i]=i;
    }
 for ( i = 1 ; i <=m ; ++ i )
 {
     int x ,y ;
     in >> op >> x >> y ;
     if(op==1)
     {
         if(root(x)!=root(y)) unite(x,y);
     }
     else
     {
         if(root(x)!=root(y)) out<<"NU\n";
         else out<<"DA\n";
     }


 }


return 0;
}