#include #include #include #include void BFS(int *, int *,int ** ,int, int); int DFS(int *, int , int **, int ); int componenti(int **, int ); void lightBFSc(int **, int *, int, int, int*); int BFScomp(int **, int); struct node *newNode(int); struct node* insert(struct node*, int, int *); int search(struct node*, int); //DEFINIZIONE DELLA FUNZIONE **BFS** void BFS(int *A, int *dist, int **pre, int n, int P) { int ii, ndp=0, i, d=0, nd=1, m=0, *mark, k=0; mark= (int *)calloc(1,sizeof(int)); //inizializzo mark[0]=P; for(i=0; i1){ size= (int*) realloc(size, nc*sizeof(int)); size[nc-1]=s; }else{size[0]=s;} } } return nc; } //****BFS MODIFICATO PER PROGRAMMA SPEEDTEST**** //DEFINIZIONE **BFScomp** int BFScomp(int **J, int n){ int i, C=0, *comp, *dist; comp=(int*)calloc(n, sizeof(int*)); dist=(int*)calloc(n, sizeof(int*)); for(i=0; i0 && dkey = item; temp->left = temp->right = NULL; return temp; } struct node* insert(struct node* node, int key, int *search) { if(node==NULL) { return newNode(key); } if(key==node->key){ search[0]=1; } if(key < node->key){ node->left = insert(node->left, key, search); } if (key > node->key){ node->right = insert(node->right, key, search); } return node; } int search(struct node* node, int key) { int A; if(node==NULL) { return 0; } if(key==node->key){ return 1; } if(key < node->key){ A=search(node->left, key); } if (key > node->key){ A=search(node->left, key); } return A; }