2015年大二上-数据结构-图-2-(1)-Prim算法

来源:互联网 发布:python 判断进程状态 编辑:程序博客网 时间:2024/06/09 14:23
/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:Annpion.cpp*作者:王耀鹏*完成日期:2016年2月2日*版本号:v1.0**问题描述:最小生成树的普里姆算法*输入描述:图*输出描述:最小生成树的普里姆算法*/#include <stdio.h>#include <malloc.h>#include "Graph.h"void Prim(MGraph g,int v)//Prim算法{    int min,lowcost[MAXV],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<g.n; ++j)        {            if(lowcost[j]!=0&&lowcost[j]<min)            {                min=lowcost[j];                k=j;            }        }        printf(" 边(%d,%d)权为:%d\n",closest[k],k,min);        lowcost[k]=0;        for(j=0;j<g.n;++j)            if(g.edges[k][j]!=0&&g.edges[k][j]<lowcost[j])        {            lowcost[j]=g.edges[k][j];            closest[j]=k;        }    }}int main(){    MGraph g;    int A[6][6]=    {        {0,6,1,5,INF,INF},        {6,0,5,INF,3,INF},        {1,5,0,5,6,4},        {5,INF,5,0,INF,2},        {INF,3,6,INF,0,6},        {INF,INF,4,2,6,0}    };    ArrayToMat(A[0], 6, g);    printf("最小生成树构成:\n");    Prim(g,0);    return 0;}

附:测试用图结构
这里写图片描述

运行结果:


0 0