int main(void) { printf("==================== LIF 9: TP Graphes =======================\n\n"); Graphe g; initGrapheVide(g); printf("-----Test pour rajouter un Noeud:------\n\n"); if(ajoutGrapheNoeud(g,"Quito")==0){ printf("On ajoute le noeud \"Quito\"\n\n"); } if(ajoutGrapheNoeud(g,"Quito")==-1){ printf("Deuxième ajout de \"Quito\" pas possible\n\n"); } ajoutGrapheNoeud(g,"Guayaquil"); ajoutGrapheNoeud(g,"Cuenca"); ajoutGrapheNoeud(g,"Otavalo"); ajoutGrapheNoeud(g,"Ibarra"); printf("-----Test pour rajouter un Arc:------\n\n"); if(ajoutGrapheArcParIndice(g,700,0,1)==0){ printf("On ajoute de l'arc Quito-Guayaquil en utilisant des indices\n\n"); } if(ajoutGrapheArcParNom(g,800,"Guayaquil","Quito")==1){ printf("Mise à jour de la distance Quito-Guayaquil en utilisant les noms\n\n"); } ajoutGrapheArcParIndice(g,900,0,2); ajoutGrapheArcParIndice(g,200,0,3); ajoutGrapheArcParIndice(g,300,3,1); printf("------Test de Dijkstra:-----------\n"); Dijkstra(g,0); printf("\n"); printf("------Test affichage du graphe-----------\n"); afficheGraphe(g); printf("-----Test pour supprimer un Noeud:------\n\n"); if(supressionGrapheNoeudParNom(g,"Quito")==0) printf("Supression du Noeud Quito en lui passant son nom\n\n"); if(supressionGrapheNoeudParIndice(g,4)==0) printf("Supression du Noeud Ibarra en lui passant son indice\n\n"); afficheGraphe(g); detruitGraphe(g); printf("==================== Fin TP Graphes =======================\n"); return 0; }
int main() { Graphe g; char name[20]; int i; srand(time(NULL)); initGrapheVide(&g); printf("************* Construction du graphe *************\n"); for(i=0; i<NB_SOMMETS; i++) { sprintf(name, "Ville-%d", i); if(!ajouteNoeud(&g, name)) printf("%s deja present\n", name); } for(i=0; i<NB_ARCS; i++) { if(!ajouteArc(&g, (rand()%POID_MAX)+1, rand()%NB_SOMMETS, rand()%NB_SOMMETS)) printf("Sommet de l'arc incorrect ou src=dest\n"); } afficheGraphe(&g); printf("*********** Fin construction du graphe ***********\n\n"); printf("******************** Dijkstra ********************\n"); sprintf(name, "Ville-%d", rand()%NB_SOMMETS); dijkstra(&g, name); printf("****************** Fin Dijkstra ******************\n\n"); printf("****************** Graphe finit ******************\n"); /* for(i=0; i<g.nb_sommets; i++) if(g->tab_sommets[i].color == BLANC) supprimeNoeud(&g, i);*/ afficheGraphe(&g); printf("****************** Graphe finit ******************\n"); detruitGraphe(&g); return 0; }
int acpm(idGraph *pGraphe) { int s1, s2, c1, c2, indexArete, poids; int poidsArbre=0; // poids de l'arbre couvrant idGraph *pGrapheACPM; // graphe de l'arbre afficheBanniere("Algorithme de kruskal : arbre couvrant de poids minimum"); // on récupère tous les arêtes du graphe via la matrice // et on met les infos sur ces aretes dans le tableau // ... a compléter // trions ce tableau dans l'ordre croissant de poids // ... a compléter // on créé le graphe vierge dans lequel on va insérer les // arêtes dans leur ordre croissant de poids pGrapheACPM = creerGraphe(pGraphe->nbSommets, pGraphe->grapheOriente, pGraphe->graphePondere); // on initialise le tableau des composantes connexes // de telle manière que chaque sommet est dans une composante // connexe différente, puisque pas encore d'arête // ... a compléter // on a notre arbre couvrant de poids minimum // // quelques printf à faire pour l'afficher // et c'est fini !! printf("Arbre couvrant de poids minimum, poids total = %d\n", poidsArbre); afficheGraphe(pGrapheACPM); detruireGraphe(pGrapheACPM); return(0); }