#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 afficherLong(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 le chemin long : ", sommet);
	  while(!estVide()) printf("%d ", depiler());
	  printf("d'ou la date au plus tot pour cette tache : %d\n\n", distance[sommet]);
	
	  tableauDatePlusTot[sommet] = distance[sommet];

	  if(sommet==derniereTache) {
		  dureeTotaleProjet=distance[sommet];
		  printf("duree totale projet est : %d", dureeTotaleProjet);
	  }
		
	}
    }
  printf("\n");
}  

