Advertisement
Guest User

tarzan - 221

a guest
Oct 21st, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct {
  5.   int x;
  6.   int y;
  7. } Coordenada;
  8.  
  9. typedef struct{
  10.   int item;
  11.   int size;
  12. } Node;
  13.  
  14. Node node[2000];
  15. Coordenada coordenada[2000];
  16.  
  17. int find (int i) {
  18.   if(node[i].item != i){
  19.     node[i].item = find(node[i].item);
  20.   }
  21.   return node[i].item;
  22. }
  23.  
  24. void mount(int arvores){
  25.   int i;
  26.   for (i = 0; i < arvores; ++i) {
  27.     scanf("%d %d", &coordenada[i].x, &coordenada[i].y);
  28.     node[i].item = i;
  29.     node[i].size = 1;
  30.   }
  31. }
  32.  
  33. int compare(int arvores, int alcance){
  34.   int i=0, j=0, final = arvores, find_i, find_j, aux = (alcance * alcance);
  35.   for(i = 0; i < arvores; ++i){
  36.     for (j = 0; j < arvores; ++j) {
  37.       if(((coordenada[i].x - coordenada[j].x) * (coordenada[i].x - coordenada[j].x)) + ((coordenada[i].y-coordenada[j].y) * (coordenada[i].y-coordenada[j].y)) <= aux){
  38.         find_i = find(i);
  39.         find_j = find(j);
  40.  
  41.         if(find_i != find_j){
  42.          --final ;
  43.          if (node[find_i].size <= node[find_j].size){
  44.            node[find_i].item = find_j;
  45.            node[find_j].size=node[find_j].size+node[find_i].size;
  46.           }
  47.           else {
  48.            node[find_j].item=find_i;
  49.            node[find_i].size=node[find_i].size+node[find_j].size;
  50.           }
  51.         }
  52.       }
  53.     }
  54.   }
  55.   return final ;
  56. }
  57.  
  58. int main() {
  59.   int arvores, alcance;
  60.   int i, j, aux;
  61.  
  62.   scanf("%d %d", &arvores, &alcance);
  63.   mount(arvores);
  64.   int final = compare(arvores, alcance);  
  65.   if (final != 1)
  66.     printf("N");
  67.   else
  68.     printf("S");
  69.  
  70.   return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement