#include #include using namespace std; const int N=6; const int INF=9999; //La valeur infinie. void floydWarshall(int longueur[][N],int dist[][N],int P[][N]); void affichage(int dist[][N],int chemin[][N]); void itineraire(int i,int j,int chemin[][N]); void itineraireville(int i,int j,int chemin[][N]); void fermeturetrans(int longueur[][N], int dist[][N], int P[][N], bool fermeture[][N]); void affichagematrice(int n, bool mat[][N]); int main(){ int longueur[N][N]={{INF,INF,INF,2,INF,2}, //Les longueurs des arcs. {2,INF,2,2,INF,INF}, //longueur[i][j]=INF si l'arc ij n'existe pas {INF,INF,INF,2,INF,INF}, {INF,INF,INF,INF,2,2}, {INF,INF,2,INF,INF,2}, {INF,INF,2,INF,INF,INF}}; int dist[N][N]; //Le tableau des distances. int chemin[N][N]; //Le tableau de la premiere etape du chemin de i a j. bool ferm[N][N]; fermeturetrans(longueur,dist,chemin,ferm); affichagematrice(N,ferm); return 0; } void affichagematrice(int n, bool mat[][N]){ for (int i = 0; i < n; i ++) { cout<<"[ "; for (int j = 0 ; j < n; j ++){ cout<dist[i][k]+dist[k][j]){ dist[i][j]=dist[i][k]+dist[k][j]; P[i][j]=P[i][k]; fermeture[i][j]=true; } } } } for (int i =0; i < N; i ++){ if (dist[i][i]<0){ std::cout<<"Il existe un cycle orienté de poids <0"<