Pagini recente » Borderou de evaluare (job #695841) | Borderou de evaluare (job #1644240) | Borderou de evaluare (job #1661583) | Cod sursa (job #582403) | Cod sursa (job #3182497)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int nmax=1e5+1;
int n, m, T[nmax], cod, x, y, rang[nmax];
int multime(int nod)
{
if(T[nod]!=nod) T[nod]=multime(T[nod]);
return T[nod];
}
void reuneste(int i, int j)
{
i=multime(i); j=multime(j);
if(i==j) return;
if(rang[i]<rang[j]) T[i]=j;
else T[j]=i;
if(rang[i]==rang[j]) rang[i]++;
}
void solve(int a, int b)
{
if(multime(a)==multime(b)) fout<<"DA"<<'\n';
else fout<<"NU"<<'\n';
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;++i) T[i]=i;
for(int i=1;i<=m;++i)
{
fin>>cod>>x>>y;
if(cod==1) reuneste(x,y);
else solve(x,y);
}
return 0;
}