Pagini recente » Cod sursa (job #3031396) | Cod sursa (job #506077) | Cod sursa (job #717803) | Cod sursa (job #1573482) | Cod sursa (job #2866789)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <stack>
#define NMAX 10000001
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n,m,TT[100005],RG[100005];
int find(int x)
{
int R,y;
for(R=x;TT[R]!=R;R=TT[R]);
return R;
}
void unite(int x, int y)
{
if(RG[x]>RG[y])
TT[y]=x;
else
TT[x]=y;
if(RG[x]==RG[y])
RG[y]++;
}
int main()
{
fin >> n>> m;
for(int i=1;i<=n;++i)
{
TT[i]=i;
RG[i]=1;
}
for(int i=0;i<m;++i)
{
int c,x,y;
fin >> c >> x >> y;
if(c==2) {
if(find(x)==find(y)) cout << "DA" << '\n';
else cout << "NU" << '\n';
} else {
if(find(x)!=find(y))
unite(find(x),find(y));
}
}
return 0;
}