Cod sursa(job #1757111)
| Utilizator | Data | 14 septembrie 2016 15:45:26 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include<stdio.h>
using namespace std;
#define NMAX 100005
int v[ NMAX ],N,M,i,t,y,x;
int tt( int x ){
while( x != v[ x ] ) x = v[ x ];
return x;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&N,&M);
for( i = 1; i <= N; i++ ) v[ i ] = i;
for( i = 1; i <= M;i++ ){
scanf("%d%d%d",&t,&x,&y);
x = tt( x ); y = tt( y );
if( t == 1 ) v[ x ]=y;
else if( y == x ) printf("DA\n");
else printf("NU\n");
}
}
