Pagini recente » Cod sursa (job #1702659) | Cod sursa (job #2293908) | Cod sursa (job #994334) | Cod sursa (job #605588) | Cod sursa (job #2733256)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int nmax=100005;
int n,m;
int rang[nmax],p[nmax];
void init()
{
for(int i=1;i<=n;i++)
{
rang[i]=1;
p[i]=i;
}
}
int root(int nr)
{
if(nr!=p[nr])
p[nr]=root(p[nr]);
return p[nr];
}
void unionn(int a,int b)
{
if(rang[a]>rang[b])
p[b]=a;
else
p[a]=b;
if(rang[a]==rang[b])
rang[b]++;
}
int main()
{
fin>>n>>m;
init();
for(int i=1;i<=m;i++)
{
int tip,x,y;
fin>>tip>>x>>y;
if(tip==1)
unionn(root(x),root(y));
else
{
if(root(x)==root(y))
fout<<"DA\n";
else
fout<<"NU\n";
}
}
return 0;
}