Pagini recente » Cod sursa (job #2101649) | Cod sursa (job #751225) | Cod sursa (job #2536013) | Cod sursa (job #2123785) | Cod sursa (job #1216480)
#include <iostream>
#include <fstream>
#define Nmax 100009
using namespace std;
int ar[Nmax],nivel[Nmax];
int search(int nod)
{
while(ar[nod]!=nod) nod=ar[nod];
return(nod);
}
void reading_solve()
{
int m,i,node1,node2,op,rad1,rad2,n;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f>>n>>m;
for(i=1;i<=n;++i)
{
ar[i]=i;
nivel[i]=1;
}
for(i=1;i<=m;++i)
{
f>>op>>node1>>node2;
if (op==1)
{
rad1=search(node1);
rad2=search(node2);
if (nivel[rad1]>nivel[rad2]) ar[rad2]=rad1;
else if (nivel[rad1]<nivel[rad2]) ar[rad1]=rad2;
else
{
ar[rad2]=rad1;
++nivel[rad1];
}
}
else
{
if (search(node1)==search(node2)) g<<"DA\n";
else g<<"NU\n";
}
}
f.close();
g.close();
}
int main()
{
reading_solve();
return 0;
}