Pagini recente » Cod sursa (job #868160) | Cod sursa (job #708342) | Cod sursa (job #911501) | Cod sursa (job #1067922) | Cod sursa (job #2755517)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int N,M,c,x,y;
int T[100005], rang[100005];
int multime(int x)
{
if(T[x]!=x)
T[x]=multime(T[x]);
return T[x];
}
void uneste(int x,int y)
{
x=multime(x);
y=multime(y);
if(rang[x]<rang[y]) T[x]=y;
else T[y]=x;
if(rang[x]==rang[y]) rang[x]++;
}
int main()
{
fin>>N>>M;
for(int i=1;i<=N;i++)
{
T[i]=i;
rang[i]=0;
}
for(int i=1;i<=M;i++)
{
fin>>c>>x>>y;
if(c==1) uneste(x,y);
else
{
if(multime(x)==multime(y)) fout<<"DA";
else fout<<"NU";
fout<<'\n';
}
}
return 0;
}