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