1、最小生成树(最小代价生成树)
Prim法:(加点法)
时间复杂度:O(n*n)——适用于稠密图
辅助数组:lowcost(=arc[0][i])和adjvex(=0)(0是始点)
void prime(MGraph G){
for(int i=1;i<G.vertexNu;i++){//若有n个点,需要执行共n-1次操作
lowcost[i]=G.arc[0][i]; //用于从中选取最短边
adjvex[i]=0;
}
lowcost[0]=0;
for(i=1;i<G.vertexNum;i+++){
k=MinEdge(lowcost,G.vertexNum)
cout<<K<<adjvex[k]<<lowcost[k];
lowcost[k]=0;
for(j=1;j<G.vertexNum;j++)
if((G.arc[k][j]<lowcost[j]){
lowcost[j]=G.arc[k][j];
arcvex[j]=k;
}
}
}
Kruskal法:(加边法)
时间复杂度:O(eloge)
int main(){
int arcNum, int vertexNum;
EdgeNode *edge;
int *parent;
cout<<"please input the number of vertexNum:"; cin>>vertexNum;
cout<<"please input the number of edges:"; cin>>arcNum;
edge=new EdgeNode[arcNum]; parent=new int[verte