title: why does floyd warshall just use one distance matrix?
body: <p>I read the pseudocode of the floyd warshall algorithm
  <code>
  1 let dist be a |V| × |V| array of minimum distances initialized to ∞ (infinity)
  2 for each vertex v
  3    dist[v][v] ← 0
  4 for each edge (u,v)
  5    dist[u][v] ← w(u,v)  // the weight of the edge (u,v)
  6 for k from 1 to |V|
  7    for i from 1 to |V|
  8       for j from 1 to |V|
  9          if dist[i][j] &gt; dist[i][k] + dist[k][j] 
  10             dist[i][j] ← dist[i][k] + dist[k][j]
  11         end if
  </code>
  But it just uses one dist matrix to save distances.
  I think there should be n dist matrixes, where n is the number of vertexes,
  Or at least we need two dist matrixes.
  one stores the current shortest path within vertexes k-1,
  the other stores the shortest path within vertexes k,
  then the first one stores shortest path within k+1,
  ....
  How can we just store the new shortest path distances within vertexes k in original matrix for distances within vertexes k-1?</p>
  
  <p><img src="https://i.stack.imgur.com/YGicp.png" alt="enter image description here"></p>
  
  <p>this picture shows we need D0, D1, D2....D(n)</p>