Pagini recente » Cod sursa (job #2162391) | Cod sursa (job #1331622) | Cod sursa (job #2425513) | Cod sursa (job #737678) | Cod sursa (job #2423664)
#include <iostream>
#include <fstream>
using namespace std;
int tata[100005],rang[100005];
int find_father(int nod)
{
if(nod==tata[nod])
return nod;
int x=find_father(tata[nod]);
tata[nod]=x;
return x;
}
void unite(int x, int y)
{
if(rang[x]>rang[y])
tata[y]=x;
if(rang[y]>=rang[x])
tata[x]=y;
if(rang[y]==rang[x])
rang[y]++;
}
int main()
{
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int x,y,tx,ty,cod,i,N,M;
in>>N>>M;
for(i=1;i<=N;i++)
{
rang[i]=1;
tata[i]=i;
}
for(i=1;i<=M;i++)
{
in>>cod>>x>>y;
tx=find_father(x);
ty=find_father(y);
if(cod==1)
{
unite(tx,ty);
}
if(cod==2)
{
if(tx==ty)
out<<"DA"<<"\n";
else
out<<"NU"<<"\n";
}
}
return 0;
}