Pagini recente » Cod sursa (job #2000512) | Cod sursa (job #1578433) | Cod sursa (job #2065448) | Cod sursa (job #2762964) | Cod sursa (job #2817617)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int v[100001],f[100001];
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;
}