rendered paste bodytemplate <typename T>void Graphe<T>::Floyd(vector<vector<int>> CheminCourt, vector<vector<int>> PointChemin) const {map<T, list<pair<T, int>>>::iterator it1 = leGraphe.begin();int sommet = 0;while (it1 != leGraphe.end()) { list<pair<T, int>>::iterator it2 = (*it1).second.begin(); int voisin = 0; while (it2 != (*it1).second.end()) { //si aucun chemin n'existe entre x,y alors 0 if ( sommet != (int)(*it2).first - 'A') ) { CheminCourt.at(sommet).at(voisin) = INFINI; PointChemin.at(sommet).at(voisin) = -1; } else { CheminCourt.at(sommet).at(voisin) = (*it2).second; PointChemin.at(sommet).at(voisin) = (int)(*it2).first - 'A'; } it2++; voisin++; } CheminCourt[sommet][sommet] = INFINI; // pas de chemin à soi-même it1++; sommet++;} for(int sommet = 0; sommet < n; sommet++) for(int voisin = 0; voisin < n; voisin++) for(int suivant = 0; suivant < n; suivant++) if(CheminCourt.at(voisin).at(sommet) + CheminCourt.at(sommet).at(suivant) < CheminCourt.at(voisin).at(suivant)) { // conserver chemin plus court CheminCourt.at(voisin).at(suivant) = CheminCourt.at(voisin).at(sommet) + CheminCourt.at(sommet).at(suivant); PointChemin.at(voisin).at(suivant) = sommet; }//if}// Floyd;#endif // CLASSE_GRAPHE