// File mainChiusuraTransitiva.cpp

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

void ChiusuraTransitiva(Grafo&,Grafo&);
void BFSDistanza(Grafo&,int,int*);

void main()
{
  GrafoLS g(7);
  g.MettiArco(0,3);
  g.MettiArco(1,2);
  g.MettiArco(2,0);
  g.MettiArco(2,3);
  g.MettiArco(3,2);
  g.MettiArco(4,0);
  g.MettiArco(5,1);
  g.MettiArco(5,2);
  g.MettiArco(5,4);
  g.MettiArco(5,6);
  g.MettiArco(6,4);
  g.MettiArco(6,5);
  int rad = 5;

  //Calcolo delle distanze
  int * dist = new int[g.NumNodi()];
  BFSDistanza(g,rad,dist);
  for (int i = 0; i < g.NumNodi(); i++)
    cout << dist[i] << endl;
  cout << endl;

  GrafoLS gg = g;
  ChiusuraTransitiva(g,gg);

  //Calcolo delle distanze
  int * distct = new int[g.NumNodi()];
  BFSDistanza(gg,rad,distct);
  for (int i = 0; i < g.NumNodi(); i++)
    cout << distct[i] << endl;
  if (gg.EsisteArco(rad,rad))
    cout << "naturalmente c'e' anche l'arco " << rad << "->" << rad;
  cout << endl;

}


