我想知道如何修改此函数以保存节点的最终最短路径.这是我的教科书中的一些修改.
template <class vType, int size>
void weightedGraphType<vType, size>::shortestPath(vType vertex) {
int i, j;
double minWeight;
for (j = 0; j < gSize; j++) {
smallestWeight[j] = weights[vertex][j];
}
bool weightFound[size];
for (j = 0; j < gSize; j++) {
weightFound[j] = false;
}
for (i = 0; i < gSize; i++) {
int v;
cout << vertex << " to " << i << endl;
minWeight = INFINITY;
for (j = 0; j < gSize; j++) {
if (!weightFound[j]) {
if (smallestWeight[j] < minWeight) {
v = j;
minWeight = smallestWeight[v];
}
}
}
weightFound[v] = true;
for (j = 0; j < gSize; j++) {
if (!weightFound[j]) {
if (minWeight + weights[v][j] < smallestWeight[j]) {
smallestWeight[j] = minWeight + weights[v][j];
}
}
}
} //end for
} //end shortestPath
最佳答案 这里有一个提示:对于每个节点,您知道找到的最小重量.您也可以在点击此节点之前知道“到达此节点的最短路径”的位置.