Pagini recente » Cod sursa (job #2828101) | Cod sursa (job #1070939) | Cod sursa (job #1762998) | Cod sursa (job #2879854) | Cod sursa (job #2419688)
#include <iostream>
#include <fstream>
using namespace std;
int tata[500001];
int grad[500001];
int N,M,x,y,op;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int findtata(int nod)
{
if(tata[nod]==nod) return nod;
tata[nod]=findtata(tata[nod]);
return tata[nod];
}
int main()
{
fin>>N>>M;
for(int i=1;i<=N;i++)
{
tata[i]=i;
grad[i]=1;
}
for(int i=0;i<M;i++)
{
fin>>op>>x>>y;
int fx,fy;
fx=findtata(x);
fy=findtata(y);
if(op==1)
{
if(grad[fx]<grad[fy])
{
tata[fx]=fy;
grad[fy]+=grad[fx];
}
else
{
tata[fy]=fx;
grad[fx]+=grad[fy];
}
}
else if(op==2)
{
if(fx==fy)
fout<<"Da"<<'\n';
else fout<<"Nu"<<'\n';
}
}
return 0;
}