数据结构第七次上机试验——最短路径

实验内容与要求:

       根据输入的图形,输入起点和终点,求出最短路径和最短路径的长度。

具体步骤:

       1. 编写一段代码,接收键盘的输入定点的数量,并以输入的整数作为边来建立图形的邻接矩阵(无向权重图)。

           例如:5 6 12 

           表示顶点5和顶点6之间有边,边的权重为12

       2. 打印出邻接矩阵。

       3. 输入起点和终点。

       4. 打印最短路径和最短路径的长度。

样例:数据测试

输入:

1 3 5
1 4 30
2 1 2
3 2 15
3 6 7
5 4 4
6 4 10
6 5 18

打印出1,5两点之间的最短距离和最短路径 

 代码

#include
using namespace std;
#define MaxInt 32767
#define MVnum 100
typedef int VextexType;
typedef int ArcType;
bool vis[MVnum];
int dis[MVnum];
int Path[MVnum];
int path[MVnum];
typedef struct{
	ArcType arcs[MVnum][MVnum];
	int vexnum,arcnum;
}AMGraph;
void CreateUDN(AMGraph &G){
	cout<<"请输入顶点数和边数:";
	cin>>G.vexnum>>G.arcnum;
	for(int i=1;i<=G.vexnum;i++)
		for(int j=1;j<=G.vexnum;j++)
			G.arcs[i][j]=MaxInt;
	cout<<"请输入两个顶点和边的权值:"<>v1>>v2>>w;
		G.arcs[v1][v2]=w;
		G.arcs[v2][v1]=w;
	} 
}
void ShortestPath_DIJ(AMGraph G,int v0){
	for(int i=1;i<=G.vexnum;i++){
		vis[i]=0;
		dis[i]=G.arcs[v0][i];
		if(dis[i]>vst>>ved;
	ShortestPath_DIJ(G,vst);
	cout<<"从"<=0;i--) cout<<"->"<"<

结果

数据结构第七次上机试验——最短路径_第1张图片

从1到5的最短路径长度为26
从1到5的最短路径为1->3->6->4->5

 

你可能感兴趣的:(数据结构)