Pagini recente » Cod sursa (job #1051756) | Cod sursa (job #494868) | Cod sursa (job #2274491) | Cod sursa (job #1485055) | Cod sursa (job #1384239)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int p = 100001;
int v[100010],i,j,n,m,x,a,b;
struct cel{int A,B;};
cel findParents(int x)
{
cel Z;
Z.A=0;
while(x != v[ x ])
{
x = v[ x ];
++Z.A;
}
Z.B = x;
return Z;
}
void addParents(int a, int b)
{
cel X,Y;
X = findParents( a );
Y = findParents( b );
if(X.A < Y.A)
v[ X.B ] = Y.B;
else
v[ Y.B ] = X.B;
}
void answer(int a, int b)
{
cel X,Y;
X = findParents( a );
Y = findParents( b );
if( X.B == Y.B )
fout<<"DA\n";
else
fout<<"NU\n";
}
int main()
{
fin>>n>>m;
for(i=1 ; i<=p ; ++i)
v[ i ] = i;
for(i=1 ; i<=m ; ++i)
{
fin>>x>>a>>b;
if( x == 1 )
addParents( a , b );
else
answer( a , b );
}
return 0;
}