⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 algo0716.cpp

📁 数据结构 清华严蔚敏c语言版 配套光盘 献给大家
💻 CPP
字号:
void ShortestPath_FLOYD(MGraph G, PathMatrix P[], DistancMatrix &D) {
  // 算法7.16
  // 用Floyd算法求有向网G中各对顶点v和w之间的最短路径P[v][w]及其
  // 带权长度D[v][w]。若P[v][w][u]为TRUE,则u是从v到w当前求得最
  // 短路径上的顶点。
  int v,w,u,i;
  for (v=0; v<G.vexnum; ++v)        // 各对结点之间初始已知路径及距离
    for (w=0; w<G.vexnum; ++w) {
      D[v][w] = G.arcs[v][w].adj;
      for (u=0; u<G.vexnum; ++u) P[v][w][u] = FALSE;
      if (D[v][w] < INFINITY) {     // 从v到w有直接路径
        P[v][w][v] = P[v][w][w] = TRUE;
      }//if
    }//for
  for (u=0; u<G.vexnum; ++u)
    for (v=0; v<G.vexnum; ++v)
      for (w=0; w<G.vexnum; ++w)
        if (D[v][u]+D[u][w] < D[v][w]) {  // 从v经u到w的一条路径更短
          D[v][w] = D[v][u]+D[u][w];
          for (i=0; i<G.vexnum; ++i)
            P[v][w][i] =(P[v][u][i] || P[u][w][i]);
        }//if
} // ShortestPath_FLOYD

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -