Pagini recente » Cod sursa (job #1990515) | Cod sursa (job #2344134) | Cod sursa (job #588949) | Cod sursa (job #2917238) | Cod sursa (job #2564149)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n,m,nrnod[100010],vtata[100010],c,a,b,tata1,tata2;
int tata(int nod)
{
while(vtata[nod]!=nod)
{
nod=vtata[nod];
}
return nod;
}
void ret(int nod,int val)
{
if(vtata[nod]!=val)
{
vtata[nod]=val;
ret(vtata[nod],val);
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
nrnod[i]=1;
vtata[i]=i;
}
for(;m;m--)
{
fin>>c>>a>>b;
if(c==1)
{
tata1=tata(a);
tata2=tata(b);
if(nrnod[tata1]>nrnod[tata2])
{
vtata[tata2]=tata1;
nrnod[tata1]+=nrnod[tata2];
}
else
{
vtata[tata1]=tata2;
nrnod[tata2]+=nrnod[tata1];
}
}
else
{
tata1=tata(a);
tata2=tata(b);
if(tata1==tata2)
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
ret(a,tata1);
ret(b,tata2);
}
}
return 0;
}