Pagini recente » Cod sursa (job #1610257) | Cod sursa (job #1390166) | Cod sursa (job #1394616) | Cod sursa (job #2727292) | Cod sursa (job #3304956)
#include <fstream>
#define NMAX 100002
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int N,M,rad[NMAX],nr[NMAX];
int Find(int x)
{
if(x==rad[x])
{
return x;
}
else
{
rad[x]=Find(rad[x]);
return rad[x];
}
}
void Union(int a, int b)
{
if(nr[a]>nr[b])
{
nr[a]+=nr[b];
rad[b]=a;
}
else
{
nr[b]+=nr[a];
rad[a]=b;
}
}
int main()
{
fin>>N>>M;
for(int i=1; i<=N; i++)
{
rad[i]=i;
nr[i]=1;
}
int tip,x,y,a,b;
for(int q=1; q<=M; q++)
{
fin>>tip>>x>>y;
a=Find(x);
b=Find(y);
if(tip==1)
{
Union(a,b);
}
else
{
if(a==b)
{
fout<< "DA";
}
else
{
fout<< "NU";
}
fout<< "\n";
}
}
return 0;
}