代码模板:
//用二维数组存储图
int graph[N][N],path[N][N];
void floyd() {//求任意两点之间的最短路径
int i,j,k;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
path[i][j]=i;
for(k=1; k<=n; k++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++) {
if(graph[i][j] > graph[i][k] + graph[k][j]) {
graph[i][j] = graph[i][k] + graph[k][j];
path[i][j]=path[k][j];
}
}
}
void showpath(int v,int u) {//打印路径
stack<int> sta;
sta.push(u);
while(sta.top() != v) {
j=sta.top();
sta.push(paht[v][j]);
}
while(!sta.empty()) {
print(sta.top()+' ');
sta.pop();
}
}