![]()
prim
#include <algorithm>
template<class Type>
void prim(int n,Type **edge)
{
Type lowcost[maxint]={0};
int closet[maxint]={0};
bool s[maxint]={0};
s[1]=true;
for(int i=2;i<=n;i++)
{
lowcost[i]=edge[1][i];
closet[i]=1;
s[1]=false;
}
for (int i=1;i<n;i++)
{
Type min=INT_MAX;
int j=1;
for (int k=2;k<=n;k++)
if (lowcost[k]<min&&!s[k])
{
min=lowcost[k];
j=k;
}
s[j]=true;
for (int k=2;k<=n;k++)
if(edge[j][k]<lowcost[k]&&!s[k])
{
lowcost[k]=edge[j][k];
closet[k]=j;
}
}
}
贪心算法,时间复杂度为o(n^2)