Pagini recente » Cod sursa (job #959214) | Cod sursa (job #2231741) | Cod sursa (job #3259391) | Cod sursa (job #468303) | Cod sursa (job #1705113)
#include <bits/stdc++.h>
#define nmax 100014
using namespace std;
int tata[nmax],rang[nmax],x,y,cod,i,n,m;
int stramos(int nod)
{
int r=nod;
int var;
while(r!=tata[r])
r=tata[r];
while(nod!=tata[nod])
{
var=tata[nod];
tata[nod]=r;
nod=var;
}
return r;
}
void unim(int x,int y)
{
x=stramos(x);
y=stramos(y);
if(x==y)
return;
if(rang[x]>rang[y])
{
rang[x]=rang[x]+rang[y];
tata[y]=tata[x];
}
else
{
rang[y]=rang[y]+rang[x];
tata[x]=tata[y];
}
}
int main()
{
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int x,y,cod;
f>>n>>m;
for(i=1;i<=n;i++)
{
tata[i]=i; rang[i]=1;
}
i=1;
while(i<=m)
{
f>>cod>>x>>y;
if(cod==1)
unim(x,y);
else
{
if(stramos(x)==stramos(y))
g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
++i;
}
return 0;
}