#include #include #include #include "file.h" #define INFINI (-1) static int excentricite(int n, int v[], int e[], int m) { file f = fil_creer(n); int *dist = (int *) malloc(sizeof(int) * n); int exc = 0; int nvisite = 0; int i; assert(dist != NULL); for (i = 0; i < n; i++) dist[i] = -1; dist[m] = 0; nvisite++; fil_enfiler(f, (void *)m); while (!fil_est_vide(f)) { int s = (int)fil_defiler(f); for (i = v[s]; i < v[s+1]; i++) { if (dist[e[i]] == -1) { fil_enfiler(f, (void *)e[i]); exc = dist[e[i]] = dist[s] + 1; nvisite++; } } } return (nvisite == n? exc : INFINI); } int main(int argc, char * argv[]) { int n = 8; int v[] = {0, 2, 5, 9, 12, 14, 16, 18, 20}; int e[] = {3, 7, 2, 4, 5, 1, 6, 7, 3, 0, 2, 4, 3, 1, 6, 1, 2, 5, 0, 2}; int i; for (i = 0; i < n; i++) { printf("excentricite(%d) = %d\n", i, excentricite(n, v, e, i)); } exit(EXIT_SUCCESS); }