Pagini recente » Cod sursa (job #1483706) | Cod sursa (job #2600474) | Cod sursa (job #1774352) | Cod sursa (job #1972876) | Cod sursa (job #2569882)
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int NMAX=100005;
int n,m,father[NMAX],s[NMAX];
int Find(int node){
if(father[node]==node)
return node;
return father[node]=Find(father[node]);
}
void Union(int a,int b){
int fa=Find(a),fb=Find(b);
if(fa==fb)
return;
if(s[fa]<s[fb])
swap(fa,fb);
father[fb]=fa;
s[fa]+=s[fb];
}
int main()
{
in>>n>>m;
for(int i=1;i<=n;i++)
father[i]=i,s[i]=1;
for(int i=1,tip,a,b;i<=m;i++){
in>>tip>>a>>b;
if(tip==1)
Union(a,b);
else{
if(Find(a)==Find(b))
out<<"DA";
else
out<<"NU";
out<<'\n';
}
}
return 0;
}