//任意两点间的最短路问题 Floyd-Warshall算法 //只使用0~k, i,j的情况下,i到j的最短距离; /* d[k][i][j] d[k-1][i][j] **G[i][k] **G[k][j] G[k][i] G[j][k] d[k-1][i][k] d[k-1][k][j] */ d[k][i][j]=min(d[k-1][i][j],d[k-1][i][k]+d[k-1][k][j]); ///int G[MAX_V][MAX_V]; ///实际上采用循环更新就行了 ///DP求任意两点之间的最小路问题 int d[MAX_V][MAX_V]; void floyd_warshall() { for(int k=0;k<num_v;k++) for(int i=0;i<num_v;i++) for(int j=0;j<num_v;j++) d[i][j]=min(d[i][j],d[i][k]+d[k][j]); }