C++实现最小生成树(PRIM算法)
写了一个十分粗糙的一段,就是应付这个算法的,但是运行中出错,不知道为什么,有人帮我下吗,谢谢
第一次用这个论坛...寒碜了点,以后有分了再给大家
#include <iostream>
using namespace std;
#define max_value 100;
//////////////
void ctree(int n,int A[5][5])
{
int i,j;
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
{cout<<"请输入"<<i<<"与"<<j<<"之间边的权:(如果边不存在,则输入0)"<<endl;
cin>>A[i][j];
if(A[i][j]==0)
A[i][j]=max_value;
A[j][i]=A[i][j];
}
}
///////////
void prim(int n,int A[5][5])
{
ctree(n,A);
int *lowcost=new int[];
int *closest=new int[];
bool s[5];
/////////
s[0]=true;
int i;
for (i=1;i<n;i++)
{
lowcost[i]=A[0][i];
closest[i]=0;
s[i]=false;
}
for (i=1;i<n;i++)
{
int min=max_value;
int j;
int k;
for (k=1;k<n;k++)
if((lowcost[k]<min)&&(s[k]==false))
{
min=lowcost[k];
j=k;
}
cout<<closest[j]<<","<<j<<"连接这两点的边的权为:"<<lowcost[k]<<endl;
s[j]=true;
for (k=1;k<n;k++)
if((A[j][k]<lowcost[k])&&(s[k]==false))
{
lowcost[k]=A[j][k];
closest[k]=j;
}
delete []lowcost;
delete []closest;
}
}
void main()
{
int array[5][5];
prim(5,array);
}