【实验目的】
)掌握图的最小生成树的概念
2 )熟悉使用预算法求解最小生成树的方法和操作。
【实验准备】
(1)阅读教材中有关图最小生成树的内容;
)2)熟悉普利姆算法。
【实验要求】
)1)用函数调用方式完成
2 )文件funp6-3.cpp的作用是用prime算法求最小生成树的操作;
)3)实验的提交需要完整准确的程序以及程序运行结果的截图。
【实验内容】
编写用prime算法求出从下图的顶点0开始的最小生成树的程序。
# include iostream # includecstdiousingnamespacestd; # define INF0x3F3 F3 fconstintmaxv=1000; sructmatgraph { int edges [ 100 ] [ 100 ]; int n; (; voidprim(matgraphg,int v ) { int lowcost[MAXV]; int MIN; int closest[MAXV],I,j,k; for(I=0; i g.n; I ) { lowcost[i]=g.edges[v][i]; closest[i]=v; (for ) I=1; i g.n; I ) { MIN=INF; for(j=0; j.n; j ) if(lowcost[j]!=0lowcost[j]min(min=lowcost[j] ); k=j; (} printf )边(%d,%d )的权限为%dn )、closest[k]、k、MIN ); lowcost[k]=0; for(j=0; j.n; j ) if(lowcost[j]!=0g.edges [ k ] [ j ] low cost [ j ] { low cost [ j ]=g.edges [ k ] [ j ]; closest[j]=k; } }}int main () { int i,j; MatGraph g; g.n=6; for(I=0; i=5; I ) for ) j=0; j=5; j ) if(I==j ) g.edges[i][j]=0; else g.edges[i][j]=INF; } g.edges[0][1]=g.edges[1][0]=9; g.edges[0][2]=g.edges[2][0]=10; g.edges[1][3]=g.edges[3][1]=5; g.edges[1][2]=g.edges[2][1]=7; g.edges[2][4]=g.edges[4][2]=6; g.edges[2][5]=g.edges[5][2]=7; g.edges[3][4]=g.edges[4][3]=1; g.edges[4][5]=g.edges[5][4]=8; printf (棱镜算法的最小生成树是(n ) ); prim(g,0 ); 返回0; }