Pagini recente » Cod sursa (job #341546) | Cod sursa (job #2238453) | Cod sursa (job #191470) | Cod sursa (job #666498) | Cod sursa (job #2281197)
#include <fstream>
#define NMAX 100000
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
int n, m, cod, x, y, r1, r2;
int P[NMAX+5], H[NMAX+5];
int findset(int nod)
{
if(P[nod]!=nod)
P[nod]=findset(P[nod]);
return P[nod];
}
void mergeset(int a, int b)
{
if(H[a]>H[b])
P[b]=a;
else
{
P[a]=b;
if(H[a]==H[b])
H[b]++;
}
}
int main()
{
fi>>n>>m;
for(int i=1; i<=n; i++)
P[i]=i;
while(m--)
{
fi>>cod>>x>>y;
r1=findset(x);
r2=findset(y);
if(cod==1)
mergeset(r1, r2);
else
{
if(r1==r2)
fo<<"DA\n";
else
fo<<"NU\n";
}
}
fi.close();
fo.close();
return 0;
}