Pagini recente » Cod sursa (job #2781251) | Cod sursa (job #2279815) | Cod sursa (job #2707891) | Cod sursa (job #2829236) | Cod sursa (job #2713739)
///#include <iostream>
#include <fstream>
const int SIZE = 1e5+10;
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n, m;
int cer, a, b;
int v[SIZE]{-1};
int getRoot(int node)
{
while(v[node]>0) node=v[node];
return node;
}
void unite(int a, int b)
{
int ra=getRoot(a), rb=getRoot(b);
if(ra>rb) swap(ra, rb);
v[ra]+=v[rb], v[rb]=ra;
}
bool sameRoot(int a, int b)
{
return (getRoot(a)==getRoot(b));
}
int main()
{
cin>>n>>m;
for(int i=1; i<=m; i++)
{
cin>>cer>>a>>b;
if(cer==1) unite(a, b);
else if(sameRoot(a, b)) cout<<"DA\n";
else cout<<"NU\n";
}
return 0;
}