Pagini recente » Cod sursa (job #579604) | Cod sursa (job #2640886) | Cod sursa (job #383059) | Cod sursa (job #2311490) | Cod sursa (job #3003627)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
#define nmax 100001
int tata[nmax],m[nmax];
int n,q,i,tip,nod1,nod2,x1,x2;
int rad(int x)
{
if(tata[x]==0)
return x;
else
{
int r=rad(tata[x]);
tata[x]=r;
return r;
}
}
int main()
{
f>>n>>q;
for(i=1;i<=q;i++)
{
f>>tip>>nod1>>nod2;
if(tip==1)
{
x1=nod1; x2=nod2;
x1=rad(nod1);
x2=rad(nod2);
if(m[x1]>m[x2])
tata[x2]=x1;
else if(m[x2]>m[x1])
tata[x1]=x2;
else
{
tata[x1]=x2;
m[x1]+=1;
}
}
else
{
x1=nod1; x2=nod2;
x1=rad(nod1);
x2=rad(nod2);
if(x1==x2)
g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}