Pagini recente » Cod sursa (job #2296156) | Cod sursa (job #2655058) | Cod sursa (job #694404) | Cod sursa (job #23703) | Cod sursa (job #1894012)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int TT[100005],N,M,R[100005];
int Father(int nod)
{
while(nod!=TT[nod])
{
nod=TT[nod];
}
return nod;
}
void Unite(int x,int y)
{
if(R[x]>R[y])
TT[y]=x;
else
TT[x]=y;
if(R[x]==R[y])
R[y]++;
}
void Solve()
{
fin>>N>>M;
for(int i=1;i<=N;i++)
{
TT[i]=i;
R[i]=1;
}
for(int i=1;i<=M;i++)
{
int c,x,y;
fin>>c>>x>>y;
if(c==1)
{
Unite(Father(x),Father(y));
}
if(c==2)
{
if(Father(x)==Father(y))
fout<<"DA"<<"\n";
else
fout<<"NU"<<"\n";
}
}
}
int main()
{
Solve();
return 0;
}