Pagini recente » Cod sursa (job #801762) | Cod sursa (job #859188) | Cod sursa (job #522399) | Cod sursa (job #929460) | Cod sursa (job #239362)
Cod sursa(job #239362)
#include <fstream>
using namespace std;
const int NMAX = 100001;
int N,M,S[NMAX],h[NMAX];
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
void set_union(int a,int b)
{
if(h[a] < h[b])
S[a] = b;
else
{
S[b] = a;
if(h[a] == h[b]) h[a]++;
}
}
int set_find(int a)
{
return S[a] == a ? a : ( S[a] = set_find(S[a]) ) ;
}
int main()
{
fin>>N>>M;
for(int i = 1; i <= N; ++i)
S[i] = i;
int op,a,b;
while(M--)
{
fin>>op>>a>>b;
switch(op)
{
case 1: if(set_find(a) != set_find(b) )
set_union(set_find(a),set_find(b));
break;
case 2: set_find(a) != set_find(b) ? fout<<"NU\n" : fout<<"DA\n";
break;
}
}
return 0;
}