1. 程式人生 > >圖 Floyd多源最短路徑

圖 Floyd多源最短路徑

多源最短路徑 void floyd()  {     for(i = 0; i < n; i++)     {         for(j = 0; j < n; j++)         {             d[i][j] = g[i][j];   //g[i][j]是圖的鄰接矩陣              path[i][j] = -1;             }     }          for(k = 0; k < n; k++)     {         for(j = 0; j < n; j++)         {             for(i = 0; i < n; i++)             {                 if(d[i][k] + d[k][j] < d[i][j])                 {                     d[i][j] = d[i][k] + d[k][j];                     path[i][j] = k;                                          if(i == j && d[i][j] < 0)  //發現負值圈                      {                         return false;                     }                 }             }         }     } }