Pagini recente » Cod sursa (job #1300790) | Cod sursa (job #2923180) | Cod sursa (job #1790369) | Cod sursa (job #2460709) | Cod sursa (job #2342201)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tata[100002],n,m,x,y,p,rg[100002];
inline int findt (int nod)
{
int aux;
while (nod!=tata[nod])
{
aux=nod;
nod=tata[nod];
tata[aux]=tata[nod];
}
return nod;
}
inline void unire (int a,int b)
{
if (rg[a]>rg[b])
tata[b]=a;
if (rg[b]>rg[a])
tata[a]=b;
if (rg[b]==rg[a])
{
tata[a]=b;
rg[a]++;
}
}
int main()
{
int p1,p2;
fin>>n>>m;
for (int i=1;i<=n;i++)
tata[i]=i;
for (int i=1;i<=m;i++)
{
fin>>p>>x>>y;
p1=findt(x);
p2=findt(y);
if (p==1)
{
if (p1!=p2)
unire(p1,p2);
}
else
{
if (p1==p2)
fout<<"DA\n";
else
fout<<"NU\n";
}
}
return 0;
}