文件名称:图论的一些算法——c语言、c++
文件大小:39KB
文件格式:DOC
更新时间:2012-06-20 12:10:27
图论
图论的一些算法 namespace FloydNS { // /**/ /* 解决:所有点对最短路径 *算法:Floyd——O(V^3) *输入:加权连通图(矩阵):g *输出:最短距离长度矩阵d[][], 路径矩阵p[][] */ GraphMatrix < double > g; double d[maxV][maxV]; // 最短路径长度 int p[maxV][maxV]; // 最短路径下一顶点 void floyd() { int i,s,t; for (s = 0 ; s < g.v; ++ s) { for (t = 0 ; t < g.v; ++ t) if ( (d[s][t] = g.a[s][t]) < Inf) p[s][t] = t; d[s][s] = 0 ; } for (i = 0 ; i < g.v; ++ i) for (s = 0 ; s < g.v; ++ s) if (s != i && d[s][i] < Inf) for (t = 0 ; t < g.v; ++ t) if (d[s][t] > d[s][i] + d[i][t]) { [Page] d[s][t] = d[s][i] + d[i][t]; p[s][t] = p[s][i]; } } }