Pagini recente » Cod sursa (job #2486831) | Cod sursa (job #1627406) | Cod sursa (job #2094273) | Cod sursa (job #2540530) | Cod sursa (job #1929438)
#include <fstream>
using namespace std;
ifstream fi ("disjoint.in");
ofstream fo ("disjoint.out");
int i,comp[100006],lg[100006],n,nr_op,op,n1,n2,tip;
int reprez(int nod)
{
while (nod!=comp[nod])
nod=comp[nod];
return nod;
}
void unire (int nod1,int nod2)
{
if (lg[nod1]>lg[nod2])
{
comp[nod2]=nod1;
return;
}
if (lg[nod2]>lg[nod1])
{
comp[nod1]=nod2;
return;
}
if (lg[nod1]==lg[nod2])
{
comp[nod2]=nod1;
lg[nod1]++;
return;
}
}
int main()
{
fi>>n>>nr_op;
for (i=1;i<=n;i++)
{
comp[i]=i;
lg[i]=1;
}
for (op=1;op<=nr_op;op++)
{
fi>>tip>>n1>>n2;
if (n1>n2) swap (n1,n2);
if (tip==1) unire (reprez(n1),reprez(n2));
if (tip==2)
{
if (reprez(n1)==reprez(n2)) fo<<"DA"<<'\n';
else fo<<"NU"<<'\n';
}
}
return 0;
}