Pagini recente » Rating Fron Mara-Ilinca (norfilinca) | Cod sursa (job #2259209) | Rating Raiu Madalina Maria (raiu_madalina_maria) | Cod sursa (job #2032903) | Cod sursa (job #2424284)
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int N, M;
int tati[100005];
int rang[100005];
int Find(int nod) ///returnez tatal nodului nod
{
if(nod==tati[nod])
return nod;
tati[nod]=Find(tati[nod]);
return tati[nod];
}
void Uniune(int x, int y)
{
x=Find(x);
y=Find(y);
///Unesc subarborele cu inaltimea mai mica la cel mai mare
if(rang[x]>rang[y])
{
rang[x]+=rang[y];
tati[y]=x;
}
else
{
tati[x]=y;
rang[y]+=rang[x];
}
/*if(rang[x]==rang[y])
rang[y]++; */
}
int main()
{
fin>>N>>M;
for(int i=1;i<=N;i++)
{
tati[i]=i;
rang[i]=1;
}
for(int i=1;i<=M;i++)
{
int c,x,y;
fin>>c>>x>>y;
if(c==1)
Uniune(x,y);
else
{
if(Find(x)==Find(y))
fout<<"DA"<<endl;
else
fout<<"NU"<<endl;
}
}
return 0;
}