#include "bellman.h"

/*****************   fonction afficher  *******
   La fonction "afficher" prend en paramètre un sommet r à partir duquel 
   une arborescence des plus courts chemins a été calculée. Elle suppose 
   que les tableaux antécédents et distance ont été correctement remplis ; 
   pour un sommet s :
   - si s n'est pas accessible depuis r, antecedent[s] vaut -1
   - si s est accessible depuis r, distance[s] indique la distance de r 
   à s et antecedent[s] indique l'avant-dernier sommet dans un plus 
   court chemin de r à s.
   Elle indique, pour chaque sommet s autre que r, le cas échéant que le 
   sommet s n'est pas accessible depuis r, et sinon un plus court chemin 
   pour aller de r à s (suite des sommets à emprunter) et la distance de 
   r à s. */
void afficher(int r)
{
  int sommet;
  int s;

  printf("Depuis %d :\n", r);
  for (sommet = 0; sommet < ordre; sommet++)
    {
      if (distance[sommet] == INFINI)
	printf("le sommet %d n'est pas accessible\n", sommet);
      else if (sommet != r)
	{
	  empiler(sommet);
	  s = sommet;
	  while(s != r)
	    {
	      s = antecedent[s];
	      empiler(s);
	    } 
	  printf("pour atteindre %d, " 
		 "on peut suivre : ", sommet);
	  while(!estVide()) printf("%d ", depiler());
	  printf("   distance parcourue : %d\n", distance[sommet]);
	}
    }
  printf("\n");
}  

