邻接矩阵存储图的信息应该是图论的基础了。邻接矩阵指的是建立一个二维数组,显然,为了表示数组中的一个值,需要调用两个下标,第一个下标表示顶点a,第二个下标表示顶点b,a到b的权值便存储在二维数组中。
需特别注意:
①建立无向图时,录入权值时需要考虑两个方向,即,从a顶点到b顶点与从b顶点到a顶点的权值相等,需做一次赋值的操作。
②邻接矩阵中,自己到自己的距离显然是零,需在初始化时考虑。
③邻接矩阵中,显然有不连通的两个顶点,此时二者之间的权值应赋值为正无穷。解决的方法是:在初始化邻接矩阵时,同时考虑为“自己到自己”的顶点赋零,并使每个顶点到另一个顶点的权值赋值为无穷(INFINITY,此处取值65535)。
话不多说,直接上代码:
#include <iostream>
#include <cstdio>
#define MAXVEX 1005
#define INFINITY 65535
using namespace std;
typedef char VertexType;//定点类型
typedef int EdgeType;