private void enterIdSuccAndCost(ArrayList<PlageHoraire> PlagesHoraires, LinkedList<Livraison> tabLivraison, Tournee ens) throws Exception
        {
               	PlageHoraire PH1,PH2;
                
                // Insert entrepot at the beginning
                ArrayList<Integer> suivantEntrepot = new ArrayList<>();
                Livraison e = new Livraison();
                e.setDestination(ens.getEntrepot());
                e.setHorraire(PlagesHoraires.get(0));
                dictionnaire.put(0,e);
                dictionnaireRetour.put(e,0);
		for(int i=1; i<nbVertices; i++)
		{
			PH1 = tabLivraison.get(i-1).getHoraire();
			int indexPH1 = PlagesHoraires.indexOf(PH1);
                        Livraison livr1 = tabLivraison.get(i-1);
                        int noeud1 = livr1.getDestination().getId();
			if((indexPH1 == 0)&&(noeud1 != ens.getEntrepot().getId()))
			{
                                suivantEntrepot.add(i);
                                Itineraire iti = new Itineraire();
                                iti.setPrevLivraison(e);
                                iti.setNextLivraison(livr1);
                                LinkedList<Troncon> ensembleTroncons = getPath(ens.getEntrepot().getId(),noeud1,ens.getPlan()); 
                                cost[0][i] = calculCost(ensembleTroncons);
                                iti.setEnsembleTroncons(ensembleTroncons);
                                ensembleTrajets.add(iti);
                                setMinMax(cost[0][i]);
			}
		}
                succ.add(0,suivantEntrepot); 
                
                // For each livraison minus entrepot
                int i;
		for(i=1; i<nbVertices; i++)
		{
			PH1 = tabLivraison.get(i-1).getHoraire();
			int indexPH1 = PlagesHoraires.indexOf(PH1);
			Livraison livr1 = tabLivraison.get(i-1);
                        int noeud1 = livr1.getDestination().getId();
                        ArrayList<Integer> l = new ArrayList<>();

			int j; 
			for(j=1; j<nbVertices; j++)
			{
				PH2 = tabLivraison.get(j-1).getHoraire();
				int indexPH2 = PlagesHoraires.indexOf(PH2);
				Livraison livr2 = tabLivraison.get(j-1);
                                int noeud2 = livr2.getDestination().getId();
				// If duration of vertex2 is = or +1 of duration of vertex 1 -> enter in succ
				if((livr1 != livr2) && ((indexPH1 == indexPH2) || (indexPH2 == indexPH1+1)))
				{
					l.add(j);
                                        Itineraire iti = new Itineraire();
                                        iti.setPrevLivraison(livr1);
                                        iti.setNextLivraison(livr2);
                                        LinkedList<Troncon> ensembleTroncons = getPath(noeud1,noeud2,ens.getPlan()); 
                                        cost[i][j] = calculCost(ensembleTroncons);
                                        iti.setEnsembleTroncons(ensembleTroncons);
                                        ensembleTrajets.add(iti);
                                        setMinMax(cost[i][j]);
				}
			}
			
			// Insert entrepot at the end
			if(indexPH1 == PlagesHoraires.size()-1) 
			{
				l.add(0);
                                Itineraire iti = new Itineraire();
                                iti.setPrevLivraison(livr1);
                                Livraison entrepot = new Livraison();
                                entrepot.setDestination(ens.getEntrepot());
                                entrepot.setHorraire(livr1.getHoraire());
                                iti.setNextLivraison(entrepot);
                                LinkedList<Troncon> ensembleTroncons = getPath(noeud1,ens.getEntrepot().getId(),ens.getPlan());
                                cost[i][0] = calculCost(ensembleTroncons);
                                iti.setEnsembleTroncons(ensembleTroncons);
                                ensembleTrajets.add(iti);
                                setMinMax(cost[i][0]);
			}
			succ.add(i,l);
		}
                
                           
                
        }