Advertisement
Guest User

PVJC - ISOLATION

a guest
Apr 4th, 2020
644
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.95 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5. struct node {
  6.     int number;
  7.     struct node* right;
  8.     struct node* left;
  9. };
  10. // rovnake stromy
  11. bool equal_trees(struct node* a, struct node* b){
  12.     if (a==NULL && b==NULL) return true;
  13.  
  14.     if (a!=NULL && b!=NULL){
  15.         if (equal_trees(a->left, b->left) && equal_trees(a->right, b->right)) return true;  
  16.     }
  17.     return false;
  18. }
  19.  
  20. // vytvorenie uzla
  21. struct node* create_node(int number){
  22.     struct node* new_node = (struct node*) calloc(1, sizeof(struct node));
  23.     new_node->number = number;
  24.     new_node->right = NULL;
  25.     new_node->left = NULL;
  26.  
  27.     return new_node;
  28. }
  29.  
  30. //vytvorenie stromu
  31. struct node* create_tree(struct node* steam, int number){// steam je ako first !
  32.     if (steam == NULL){
  33.         return create_node(number);
  34.         //printf("%dasdfa\n", steam->number);
  35.         //return steam;
  36.     }
  37.     if (number < steam->number){
  38.         //steam->right = create_node(number, NULL, NULL);
  39.         steam->left = create_tree(steam->left, number);
  40.     }
  41.     else if (number >= steam->number){
  42.         steam->right = create_tree(steam->right, number);
  43.     }
  44.     return steam;
  45. }
  46.  
  47.  
  48. int main(){
  49.     int a, b, number;
  50.     scanf("%d %d", &a, &b);
  51.     struct node* trees[a];
  52.     int y = 0, x = 0;
  53.     trees[y] = NULL;
  54.     while (y != a){
  55.         scanf("%d", &number);
  56.         trees[y]  = create_tree(trees[y], number);
  57.         //printf("dsafsadfs%dfirstcycle.\n", first->number);
  58.         x++;
  59.         if (x == b){
  60.             x = 0;
  61.             //trees[y] = NULL;
  62.             y++;
  63.             trees[y] = NULL;
  64.         }
  65.     }
  66.     int sum = 0;
  67.     int pomocne_pole[a];
  68.     int index = 0;
  69.     while (index != a){
  70.         pomocne_pole[index] = 0;
  71.         index++;
  72.     }
  73.  
  74. // zistenie kolko je typov stromov
  75.     for (int i = 0; i < a; i++){
  76.         if (pomocne_pole[i] == -1){
  77.             continue;
  78.         }
  79.         for (int j = i + 1; j < a; j++){
  80.             if (equal_trees(trees[i], trees[j]) == true){
  81.                 pomocne_pole[j] = -1;  
  82.             }      
  83.         }
  84.     }
  85.     int pom = 0;
  86.     while (pom != a){
  87.         if (pomocne_pole[pom] == 0){
  88.             sum++;
  89.         }
  90.         pom++;
  91.     }
  92.     printf("%d\n", sum);
  93.     return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement