邻接矩阵
图的学习我仍然有许多不懂的地方,所有我先聊聊我比较了解的邻接矩阵。
图的邻接矩阵的存储方式是用两个数组来表示图。
一个一维数组存储图中顶点信息,一个二维数组存储图中的边的信息。
若图G有n个顶点,那这个邻接矩阵就是一个n*n的方阵:
当i=j时,G[i] [j]=0;
当i=a;j=b时,G[i][j]=c;
反之,G[i][j]=无限大(通常取999999999)
其中,c表示a地到b地的权值。
邻接矩阵的的存储结构:
#define INFINITY 999999999;
typedef struct
{
int v[1000];
int arc[1000][1000];
int n,m;//图中的顶点数和边数
}MGraph;
邻接矩阵可以作用于最小生成树的prim算法。
int i,j;
for(i=0; i<b; i++)
{
for(j=0; j<b; j++)
{
if(i==j)
G[i][j]=0;
else
G[i][j]=999999999;
}
}
for(i=0; i<a; i++)
{
int n,m,h;
scanf("%d%d%d",&n,&m,&h);
G[n-1][m-1]=h;
}
以上是邻接矩阵作用在最小生成树的prim算法的处理。
来源:CSDN
作者:huang_c_c
链接:https://blog.csdn.net/huang_c_c/article/details/104417467