Pagini recente » Cod sursa (job #1587156) | Cod sursa (job #1789178) | Cod sursa (job #2964513) | Cod sursa (job #2048063) | Cod sursa (job #2925875)
#include <fstream>
#import <algorithm>
#import <vector>
#import <map>
#import <set>
#import <deque>
#import <queue>
#import <cassert>
//#import <cmath>
#import <cstring>
#import <cctype>
#import <cstdlib>
#import <stack>
#import<unordered_map>
using namespace std;
class DSU
{
vector<int>t;
int r;
public:
DSU(int n)
{
t.resize(n+1);
for(int i=1;i<=n;i++)
{
t[i]=i;
}
r=n;
}
int root(int x)
{
if(x==t[x])return x;
t[x]=root(t[x]);
return t[x];
}
void unite(int a,int b)
{
int x=root(a);
int y=root(b);
if(x==y)
{
return;
}
r--;
t[y]=x;
}
};
main()
{
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n,q;
cin>>n>>q;
DSU dsu(n);
while(q--)
{
int cer,x,y;
cin>>cer>>x>>y;
if(cer==1)
{
dsu.unite(x,y);
}
else
{
if(dsu.root(x)==dsu.root(y))
{
cout<<"DA\n";
}
else
{
cout<<"NU\n";
}
}
}
}