1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include<iostream> #include<vector>
using namespace std;
void Floyd(Graph G, int path[][]) { int d[G.vexnum][G.vexnum]; int v, w; for(v = 0;v<G.vexnum;v++) { for(w=0;w<G.vexnum;w++) { d[v][w] = G.arcs[v][w]; path[v][w] = -1; } } int u; 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!=w) { d[v][w] = d[v][u] + d[u][w]; path[v][w] = u; } } } } }
|