Pagini recente » Cod sursa (job #2067861) | Cod sursa (job #259078) | Cod sursa (job #1315718) | Cod sursa (job #2134909) | Cod sursa (job #2817616)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int v[100005],f[100005];
int unire(int rx,int ry)
{
if(v[rx]>v[ry])
f[ry]=rx;
else if(v[rx]<v[ry])
f[rx]=ry;
else if(v[rx]==v[ry])
{
f[rx]=ry;
v[ry]++;
}
}
int multime(int a)
{
while(a!=f[a])
a=f[a];
return a;
}
int main()
{
int n,m,cer,x,y,i;
fin>>n>>m;
while(n>0)
{
f[n]=n;
n--;
}
for(i=0; i<m; i++)
{
fin>>cer>>x>>y;
x=multime(x);
y=multime(y);
if(cer==1)
unire(x,y);
else if(x==y)
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
return 0;
}