Pagini recente » Cod sursa (job #1001085) | Cod sursa (job #124552) | Istoria paginii runda/simulare-cartita-03/clasament | Cod sursa (job #1051489) | Cod sursa (job #544066)
Cod sursa(job #544066)
/*
* File: main.c
* Author: slycer
*
* Created on March 1, 2011, 12:48 AM
*/
#include <stdio.h>
#include <stdlib.h>
int * d ; //= calloc(100000,sizeof(int));
int find( int x ){
while ( d[x]!=x){
x = d[x];
}
return x;
}
int union_( int x, int y ){
int a = find( x );
int b = find( y );
//if ( random()%2==0){
// d[a] = b;
//} else {
// d[b] = a;
// }
if ( d[b] == b ){
d[a] = b;
} else {
d[a] = d[b];
}
}
/*
*
*/
int main(int argc, char** argv) {
d = calloc( 100001, sizeof(int ));
FILE * in = fopen("disjoint.in","r");
FILE * out = fopen("disjoint.out","w");
int n,m;
fscanf(in,"%d%d",&n,&m);
int i;
for ( i=1; i<=n; i++){
d[i] = i;
}
for ( i=1; i<=m; i++){
int x,y,z;
fscanf(in,"%d%d%d",&x,&y,&z);
if ( x == 1 ){
union_(y,z);
}
if ( x == 2 ){
int a = find(y);
int b = find(z);
if ( a==b){
fprintf(out,"DA\n");
} else {
fprintf(out,"NU\n");
}
}
}
fclose( in );
fclose( out );
return (EXIT_SUCCESS);
}