// File main.cpp

#include <iostream.h>
#include "GrafoLS.h"

int* OrdinamentoTopologico(Grafo&);

void main()
{

  GrafoLS g(9);
  g.MettiArco(0,1);
  g.MettiArco(1,2);
  g.MettiArco(3,2);
  g.MettiArco(3,4);
  g.MettiArco(4,5);
  g.MettiArco(2,5);
  g.MettiArco(6,7);
  g.MettiArco(0,7);
  g.MettiArco(1,7);

  //Calcolo ordine topologico
  int* ris1 = OrdinamentoTopologico(g);
  for (int i = 0; i < g.NumNodi(); i++)
    cout << ris1[i] << endl;
  cout << endl;


  //ora aggiungo un arco formando un ciclo
  g.MettiArco(2,0);


  //Calcolo ordine topologico: nota il grafo contiene cicli!
  int* ris2 = OrdinamentoTopologico(g);
  for (int i = 0; i < g.NumNodi(); i++)
    cout << ris2[i] << endl;
  cout << endl;
  //nota: nell'output appaiono dei -1 che indicano che non e' stato possibile
  //assegnare ad alcuni nodi un numero d'ordine topologico.
}


