Pagini recente » Cod sursa (job #3292651) | Rating Pasa Corneliu (Kusika) | Cod sursa (job #3293638) | Cod sursa (job #3240489) | Cod sursa (job #3292955)
#include <iostream>
#include <bits/stdc++.h>
#define VMAX 100005
#define INF 2147000000
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int rnk[VMAX];
int grupa[VMAX];
int find_parent(int nr)
{
if(grupa[nr]==nr)
return nr;
return grupa[nr]=find_parent(grupa[nr]);
}
void union_find(int a, int b)
{
a=find_parent(a);
b=find_parent(b);
if(rnk[a]<rnk[b])
swap(a,b);
if(rnk[a]==rnk[b])
{
rnk[a]++;
}
grupa[b]=a;
}
signed main()
{
long long int n,m,i,j,k,t,q,nr,p;
fin>>n>>m;
for(i=1;i<=n;i++)
{
grupa[i]=i;
rnk[i]=1;
}
while(m--)
{
fin>>i>>j>>k;
if(i==1)
union_find(j,k);
else
{
if(find_parent(j)==find_parent(k))
fout<<"DA\n";
else
fout<<"NU\n";
}
}
fin.close();
fout.close();
return 0;
}