Pagini recente » Borderou de evaluare (job #216436) | Borderou de evaluare (job #2366599) | Borderou de evaluare (job #3366128) | Cod sursa (job #3365069) | Cod sursa (job #3364683)
#include <bits/stdc++.h>
using namespace std;
const int nm=1e5+5;
int parent[nm], sz[nm];
int fin(int a)
{
if(a==parent[a])
return a;
return parent[a]=fin(parent[a]);
}
void unite(int a, int b)
{
a=fin(a);
b=fin(b);
if(sz[a]<sz[b])
swap(a, b);
parent[b]=a;
sz[a]+=sz[b];
sz[b]=0;
}
int main()
{
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n, m, x, a, b;
cin>>n>>m;
for(int i=1; i<=n; i++)
{
parent[i]=i;
sz[i]=1;
}
for(int i=1; i<=m; i++)
{
cin>>x>>a>>b;
if(x==1)
unite(a, b);
else
{
if(fin(a)==fin(b))
cout<<"DA"<<'\n';
else
cout<<"NU"<<'\n';
}
}
return 0;
}