Pagini recente » Cod sursa (job #3338036) | Cod sursa (job #918790) | Cod sursa (job #2262420) | Borderou de evaluare (job #1569143) | Cod sursa (job #1319697)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tt[100014], rg[100014], n, m;
int stramos(int nod)
{
int r=nod;
for(;tt[r]!=r;r=tt[r]);
while(tt[nod]!=nod)
{
int aux=tt[nod];
tt[nod]=r;
nod=aux;
}
return r;
}
void unire(int a, int b)
{
a=stramos(a);
b=stramos(b);
if(a==b)
return ;
if(rg[a]<rg[b])
swap(a, b);
rg[a]+=rg[b];
tt[b]=a;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
rg[i]=1;
tt[i]=i;
}
for(int i=1;i<=m;i++)
{
int tip, a, b;
fin>>tip>>a>>b;
if(tip==1)
unire(a,b);
else
{
if(stramos(a)!=stramos(b))
fout<<"NU\n";
else
fout<<"DA\n";
}
}
return 0;
}