Cod sursa(job #1051446)

Utilizator impulseBagu Alexandru impulse Data 10 decembrie 2013 01:13:37
Problema Paduri de multimi disjuncte Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
//
//  main.c
//  disjoint
//
//  Created by Alexandru Bâgu on 12/10/13.
//  Copyright (c) 2013 Alexandru Bâgu. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[])
{
    freopen("disjoint.in", "r", stdin);
    freopen("disjoint.out", "w", stdout);
    
    int N, M, i;
    scanf("%d %d", &N, &M);
    int *A = (int*)malloc((N+1) * sizeof(int));
    for(i = 1; i <= N; i++)
        A[i] = i;
    for(i = 0; i < M; i++)
    {
        int k, l, m;
        scanf("%d %d %d", &k, &l, &m);
        if(k == 1)
        {
            A[m] = l;
        }
        else
        {
            while(l != A[l]) l = A[l];
            while(m != A[m]) m = A[m];
            if(m == l)
                printf("DA\n");
            else
                printf("NU\n");
        }
    }
    return 0;
}