#ifndef ARCS_H
#define ARCS_H

#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <cstdlib> // pour atoi

/**

  Op Op , Oppa Vector Style ...
  Heyyyyyyyyy Sexy Array ...
  Op Op , Oppa Vector Style ...

  */

class arcs{ // les arcs récupéré par le parseur
    public:
        arcs(int dep, int arr, int dis);
        int _dep;
        int _arr;
        int _dis;

        bool operator== ( const arcs& a2){
            if (_arr != a2._arr) return false;
            if (_dep != a2._dep) return false;
            if (_dis != a2._dis) return false;
            return true;
        }
};

class sommet{
    public:
        sommet(int id, int place, arcs tmparc);
        sommet(int id, int place);

        std::vector < arcs > listeArcs; // les arcs qui decoule du sommet
        int _id;
        int _place; // place dans le tableau
};

class graph{
        public:
        std::vector < arcs > listeArcs; // les arrete du graphes
        std::vector < sommet > listeSom; // les sommet du graphes
        int nb_sommet;
        int nb_Arcs;

        graph();
        graph(std::string mon_fichier);// Lit le graphes et initialises la structures
        int setRank(sommet& s1, int rang_parent);
        void printgraph();
        int setPrim(graph& g2);

        sommet getSommet(int place){ return listeSom[place]; }
        int getPlace(int s1){
            for (unsigned int i=0; i < listeSom.size(); i++){
                if (s1 == listeSom[i]._id ){ return listeSom[i]._place;}
            }return-1;} // si il a pas été trouver il y a une erreur dans le graphes

};

#endif // ARCS_H
