Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct {
- int x;
- int y;
- } Coordenada;
- typedef struct{
- int item;
- int size;
- } Node;
- Node node[2000];
- Coordenada coordenada[2000];
- int find (int i) {
- if(node[i].item != i){
- node[i].item = find(node[i].item);
- }
- return node[i].item;
- }
- void mount(int arvores){
- int i;
- for (i = 0; i < arvores; ++i) {
- scanf("%d %d", &coordenada[i].x, &coordenada[i].y);
- node[i].item = i;
- node[i].size = 1;
- }
- }
- int compare(int arvores, int alcance){
- int i=0, j=0, final = arvores, find_i, find_j, aux = (alcance * alcance);
- for(i = 0; i < arvores; ++i){
- for (j = 0; j < arvores; ++j) {
- 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){
- find_i = find(i);
- find_j = find(j);
- if(find_i != find_j){
- --final ;
- if (node[find_i].size <= node[find_j].size){
- node[find_i].item = find_j;
- node[find_j].size=node[find_j].size+node[find_i].size;
- }
- else {
- node[find_j].item=find_i;
- node[find_i].size=node[find_i].size+node[find_j].size;
- }
- }
- }
- }
- }
- return final ;
- }
- int main() {
- int arvores, alcance;
- int i, j, aux;
- scanf("%d %d", &arvores, &alcance);
- mount(arvores);
- int final = compare(arvores, alcance);
- if (final != 1)
- printf("N");
- else
- printf("S");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement