Pagini recente » Cod sursa (job #2527476) | Cod sursa (job #2148185) | Cod sursa (job #13771) | Cod sursa (job #1695935) | Cod sursa (job #1701073)
#include <stdio.h>
#define NMAX 100000
#define QUESTIONS 100000
int sef[ NMAX ] ;
int find (int poz ) {
if (sef[poz] != poz ) {
sef[poz] = find(sef[poz] ) ;
return sef[poz] ;
}
return poz ;
}
void myunion (int poz1, int poz2 ) {
sef[find(poz1)] = sef[find(poz2)] ;
}
int main()
{
FILE *fin, *fout ;
fin = fopen ("disjoint.in", "r" ) ;
fout = fopen ("disjoint.out", "w" ) ;
int n, i, elem, k, tip, poz1, poz2 ;
fscanf (fin, "%d%d", &n, &k ) ;
for (i = 1 ; i <= n ; i++ ) {
sef[i] = i ;
}
for (i = 1 ; i <= k ; i++ ) {
fscanf (fin, "%d%d%d", &tip, &poz1, &poz2 ) ;
if (tip == 2 ) {
if (find(poz1) == find(poz2) )
fprintf (fout, "DA\n" ) ;
else
fprintf (fout, "NU\n" ) ;
}
else {
myunion (poz1, poz2 ) ;
}
}
return 0;
}