Cod sursa(job #1701435)

Utilizator cpitting_llamasRotaru Tanase Gherghina cpitting_llamas Data 13 mai 2016 01:15:39
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <iostream>
 
int father[100000];
int N, K;
 
void unite(int i, int j) {
  father[i] = j;
}
    
int find(int node) {
  if(node == father[node]) 
    return node;
        
  return find(father[node]);
}
 
int main() {
  freopen("disjoint.in", "r", stdin);
  freopen("disjoint.out", "w", stdout);
  
  int i, comm, arg1, arg2;
  int father_arg1, father_arg2;
 
  scanf("%d %d ", &N, &K);
 
  for(i = 1; i <= N; ++i)  
    father[i] = i;

  for (i = 1; i <= K; ++i) {
    scanf("%d %d %d", &comm, &arg1, &arg2);

    father_arg1 = find(arg1);
    father_arg2 = find(arg2);
 
    if(comm == 2) {
      if (father_arg1 == father_arg2)
        printf("DA\n");
      else
        printf("NU\n");
    }
    else 
      unite(father_arg1, father_arg2);
  }

  return 0;
}