Pagini recente » Cod sursa (job #1402333) | Cod sursa (job #2328100) | Cod sursa (job #661526) | Cod sursa (job #2593837) | Cod sursa (job #1747382)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
#define lim 100001
int n,m,arb[lim],nr[lim];
int find(int x)
{
if(x==arb[x])
return x;
return find(arb[x]);
}
int main()
{
int i,a,ca,cb,b,tip;
fin>>n>>m;
for(i=1; i<=n; i++)
arb[i]=i, nr[i]=1;
for(i=1; i<=m; i++)
{
fin>>tip;
///prima cerinta
if(tip==1)
{
fin>>a>>b;
ca=find(a);
cb=find(b);
if(ca==cb) ;
else
if(nr[ca]<=nr[cb])
{
nr[cb]+=nr[ca];
arb[ca]=cb;
}
else
{
nr[ca]+=nr[cb];
arb[cb]=ca;
}
}
/// a doua cerinta
if(tip==2)
{
fin>>a>>b;
ca=find(a);
cb=find(b);
if(ca==cb)
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
}
fin.close();
fout.close();
return 0;
}