最短路径

//Floyd算法——C++描述
#include "string"
#include <iostream>
using namespace std;
struct MGraph
{
 int  arc[10][10];
    string vertex[10];
 int vertexNum;
};
void Floyd(MGraph G,string   path[][100],int dist[][10])
{
 int i,j ,k;

    for (i=0; i<G.vertexNum; i++)       
    for (j=0; j<G.vertexNum; j++)
    {
     dist[i][j]=G.arc[i][j];
     if (dist[i][j]!=10000)
       path[i][j]=G.vertex[i]+G.vertex[j];
     else path[i][j]=" ";
    }
    for (k=0; k<G.vertexNum; k++)        
       for (i=0; i<G.vertexNum; i++)      
          for (j=0; j<G.vertexNum; j++)
           if (dist[i][k]+dist[k][j]<dist[i][j])
     {
             dist[i][j]=dist[i][k]+dist[k][j];
             path[i][j]=path[i][k]+path[k][j];
     }
}
 
void main()
{
 string path[10][10];
 int dist[10][10],i,j;
 //cin>>i>>j;
    MGraph G;
 cin>>G.vertexNum;

 for(i=0;i<G.vertexNum ;i++)
 {
  cin>>G.vertex[i];
  for(j=0;j<G.vertexNum ;j++)
  {
   cin>>G.arc[i][j];
  }
   
 }

}

 

posted @ 2012-05-06 22:12  MFT  阅读(187)  评论(0编辑  收藏  举报