Pagini recente » Cod sursa (job #3259914) | Cod sursa (job #2636564) | Cod sursa (job #2641683) | Cod sursa (job #197820) | Cod sursa (job #1667698)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,i,o,x,y,t[100001],rang[100001],r1,r2;
int radacina(int x)
{
int r=x,aux;
while(t[r]!=r) r=t[r];
while(t[x]!=x)
{
aux=t[x];
t[x]=r;
x=aux;
}
return r;
}
void unestedrum(int x, int y)
{
if(rang[x]>rang[y]) t[y]=x;
else t[x]=y;
if(rang[x]==rang[y]) rang[y]++;
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
{
t[i]=i;
rang[i]=1;
}
for(i=1;i<=m;i++)
{
fin>>o>>x>>y;
r1=radacina(x);
r2=radacina(y);
if(o==1) unestedrum(r1,r2);
else if(r1==r2) fout<<"DA\n";
else fout<<"NU\n";
}
return 0;
}