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)

相关文章: