include
using namespace std;
const int Max=10; //最多顶点数
class Graph{
public:
Graph(int a[], int n, int e); //构造 n个顶点 e条边的图,a[]存放顶点名称
~Graph(){} //析构函数
void Ne(int v); //求最短路径
private:
int vertex[Max]; //存放顶点
int arc[Max][Max]; //存放边
int vertexNum, arcNum; //顶点和边数
int visited[Max]={0};
};
Graph::Graph(int a[], int n, int e){
int i,j,k,weight;
vertexNum=n; arcNum=e;
for(i=0; i<vertexNum; i++){
cin>>j;
a[i]=j;
}
for(i=0;i<vertexNum;i++) //存储图的顶点信息
vertex[i]=a[i];
for(i=0;i<vertexNum;i++) //初始化图的邻接矩阵
for(j=0;j<vertexNum;j++)
arc[i][j]=1000;
for(k=0;k<arcNum;k++){ //存储图的边信息
cout<<"请输入边的两个顶点的序号及权值:" ;
cin>>i>>j>>weight;
arc[i][j]=weight; arc[j][i]=weight;
}
}
void Graph::Ne(int v){
int s=0; //总路程长度
int temp=100;
cin>>v; //输入出发的城市
int v0=v; //保存出发城市
visited[v-1]=1;
for(int i=0; i<vertexNum; i++){
cout<<vertex[v-1]<<"-->";
for(int j=0; j<vertexNum; j++){
if(visited[j]==0 && arc[v][j]<temp){
temp=arc[v][j];
v=j;
}
}
visited[v]=1;
s=s+temp; }
cout<<vertex[v0-1]<<endl;
// for(int i=0; i<vertexNum; i++){ //检查
// cout<<visited[i]<<" ";
// }
cout<<"总路程为:"<<s+arc[v][v0]<<endl;}
int main(){
int num, n, e; //城市序号 ,城市个数,边数 int A[n]; //存放顶点
cout<<"请输入城市数目及边数:"<<endl;
cin>>n>>e;
cout<<"请输入城市信息(城市序号):"<<endl; //输入城市序号
Graph G(A, n, e);
G.Ne(1);
return 0;
}
为什么输出不对