#include <iostream>
#include "Q2.h"
#include "Flots.h"

using namespace std;

int main()
{
    string entree,sortie;
    vector<arc> lesArcs;
    vector<sommet> lesSommets;
    vector< vector<arc> > histoChemins;
    vector< vector<arc> > traceA;
    vector< vector<arc> > traceB;
    vector<int> lesAugmentationsFlot;
    vector<string> Trace_chemin;
    vector<int> Trace_value;




    if(lirefichierArc(lesArcs,entree,sortie) && connexeMat(lesArcs,entree,sortie))
    {
        cout << "Le graphe est connexe"<<endl;
        cout << "AFFICHAGE DES ARCS DU RESEAU " << endl<< endl;

        afficheLesArcs(lesArcs);
        bloch(lesArcs, entree, sortie, traceA,histoChemins,lesAugmentationsFlot);
        //afficheLesArcs(lesArcs);
        afficheTrace(traceA ,lesArcs);
        //lecture_sommets(lesArcs, lesSommets);
        //ecrire_fichier(trace, lesArcs);

        lecture_sommets(lesArcs, lesSommets);
        cout << endl;
        set_rang_sommets(lesArcs, lesSommets, entree);
        Q2(lesArcs, lesSommets, entree, sortie, traceB, Trace_chemin, Trace_value);
        /**
        Trace_chemin : un tab de string, chaque string contient un chemin(une éxécution)
        Trace_value : la valeur du min pour chaque éxécution+++++++++++
        */
        afficheLesArcs(lesArcs);
        //afficher_sommet(lesSommets);


        ecrire_fichier(traceA, lesArcs, traceB, lesArcs,histoChemins,lesAugmentationsFlot,Trace_chemin,Trace_value,flotMax(lesArcs,sortie));

    }
    else
    {
        cout << "Le graphe n'est pas connexe" <<endl;
    }

    return 0;
}

