2.1在dist[n]中求最小值,其编号为k;
2.2输出dist[k]和path[k];
2.3修改数组dist和path;
2.4将顶点k添加到数组s中;
(四)详细设计
#include
usingnamespacestd;
constintvertexNum=10;
constintMAX=10000;//表示大于所有边上权值的数
intdefault_e[vertexNum][vertexNum]={0,100,150,MAX,100,400,MAX,MAX,MAX,MAX,
100,0,MAX,MAX,MAX,MAX,MAX,MAX,MAX,400,
150,MAX,0,100,MAX,MAX,50,MAX,MAX,MAX,
MAX,MAX,100,0,MAX,MAX,MAX,200,100,200,
100,MAX,MAX,MAX,0,250,MAX,MAX,MAX,MAX,
400,MAX,MAX,MAX,250,0,100,300,MAX,MAX,
MAX,MAX,50,MAX,MAX,100,0,MAX,MAX,MAX,
MAX,MAX,MAX,200,MAX,300,MAX,0,150,MAX,
MAX,MAX,MAX,100,MAX,MAX,MAX,150,0,150,
MAX,400,MAX,200,MAX,MAX,MAX,MAX,150,0};
//初始化邻接矩阵10*10
intdefault_v[vertexNum]={0,1,2,3,4,5,6,7,8,9};
/************定义景点结构体**********/
structview_spot_node
{
charname[vertexNum];
intcodename;//代号
view_spot_nodeoperator=(view_spot_node&v)//重载等号运算符,形参是一个view_spot_node结构体类型的引用
{
codename=v.codename;
for(inti=0;iname[i]=v.name[i];
returnv;
}
};
/********输入代号及景点名字*********/
view_spot_nodedefault_vsn[vertexNum]={"景点A",1,"景点B",2,"景点C",3,"景点D",4,"景点E",5,"景点F",6,"景点G",7,"景点H",8,"景点I",9,"景点J",10};
/*************图结构***********/
classGrahp
{
public:
Grahp(inte[vertexNum][vertexNum],intv[vertexNum]=default_v);//定义边和结点(首地址)
intshortest_way(ints,intd);//求最短路径intstore_v[vertexNum];//存储结点
intdistance[vertexNum];//声明距离的数组
private:
intBFS(ints,intd);//广度优先算法voidstore(intd);
intedge[vertexNum][vertexNum];//存储边intvertex[vertexNum];//顶点数组
intvisited[vertexNum];//将为访问的顶点的