Pagini recente » Cod sursa (job #72359) | Cod sursa (job #957435) | Cod sursa (job #2717447) | Cod sursa (job #2415925) | Cod sursa (job #1037199)
#include<iostream>
#include<fstream>
#include<cstdio>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,tata[100005],nrnod[100000],t1,t2,op;
inline void Citire()
{
fin>>n>>m;
}
inline void Union(int i,int j)
{
if (nrnod[i]>nrnod[j])
{
tata[j]=i;
nrnod[j]+=i;
}
else
{
tata[i]=j;
nrnod[i]+=j;
}
}
inline int Find(int x)
{
int y,r,aux;
r=x;
while (tata[r]!=0)
r=tata[r];
y=x;
while (y!=r)
{
aux=y;
y=tata[y];
tata[aux]=r;
}
return r;
}
inline void Rezolva()
{
for (int i=1;i<=m;i++)
{
fin>>op>>t1>>t2;
if (op==1)
Union(Find(t1),Find(t2));
else
if (op==2)
{
if(Find(t1)==Find(t2))
fout<<"DA\n";
else fout<<"NU\n";
}
}
}
int main()
{
Citire();
Rezolva();
return 0;
}