Pagini recente » Cod sursa (job #3158041) | Cod sursa (job #2160679) | Cod sursa (job #2119661) | Cod sursa (job #125926) | Cod sursa (job #2046991)
#include <iostream>
#include <stdio.h>
#define N 100001
#include <fstream>
using namespace std;
ifstream in("disjoint.in"); ofstream out("disjoint.out");
int T[N],n;
int rang[N];
int rada(int nod)
{
int R=nod,next;
while(T[R]!=R)R=T[R];
//avem radacina in R;
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]+=rang[y];
}
int main()
{
int op;
in >> n >> op;
for (int i=1 ;i<=n ;++i){
T[i]=i;
rang[i]=1;
}
for ( int i= 1; i <= op ; ++i)
{
int x,a,b;
in >> x >> a>>b;
if ( x == 1 )if(rada(a)!=rada(b))unite(rada(a),rada(b));
if(x == 2 )if(rada(a)==rada(b))out<<"DA\n";
else out <<"NU\n";
}
return 0;
}