Pagini recente » Cod sursa (job #1645355) | Cod sursa (job #2947321) | Cod sursa (job #1830372) | Cod sursa (job #1732542) | Cod sursa (job #1333169)
#include <iostream>
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int p[NMAX],h[NMAX],n,m;
int root (int x)
{
if (p[x]!=x) p[x]=root(p[x]);
return p[x];
}
void unire(int x, int y)
{
int rx=root(x);
int ry=root(y);
if (h[rx]>h[ry])
{
p[ry]=rx;
h[rx]+=h[ry];
}
else
{
p[rx]=ry;
h[ry]+=h[rx];
}
}
int main()
{
int cod,x,y;
f>>n>>m;
for(int i=0; i<=n; i++)
{ p[i]=i;
h[i]=1;
}
for (int i=0; i<m; i++)
{ f>>cod>>x>>y;
if (cod==2)
if (root(x)==root(y)) g<<"DA"<<endl;
else g<<"NU"<<endl;
else {if (root(x)!=root(y))
unire(x, y);
}
return 0;
}
}