算法思想:
首先置S={1},然后只要S是V的真子集,就做如下的贪心选择:选择满足条件i属于S,j属于V-S,且edge[i][j]是最小的边,就将其顶点j添加到S中,这个过程一直进行到S=V时为止,在这个过程中,选取到的所有边恰好构成G的一颗最小生成树。
#include<stdio.h>
#define INFINITY 5000
typedef char VertexType;
typedef int EdgeType;
#define MAX 100//定义数组大小
typedef struct
{
VertexType vexs[MAX];
EdgeType edges[MAX][MAX];
int vexnum;//记录图的顶点数
int arcnum;//记录图的边或弧的条数
}AdjMatrix;
//创建图的邻接矩阵
AdjMatrix CreatGraph_Matrix()
{
AdjMatrix G;
int i,j,k;
int weight;
printf("please input graph's vexnum and arcn