c++的prim算法 没错误 但是运行不出来
//c++的prim算法
#include <iostream>
using namespace std;
const int max_num=100;
int minedge[max_num][max_num];//括号内是两个点,此数组的值为两个点的权值
typedef struct {
int z;
int N;
int f;
}dian;
dian a[max_num];
int w;
class prim{
public:
prim();
//创建一个带权值的图
void creatgraph(){
int i,j,x;
cout<<"请输入顶点数"<<endl;
cin>>n;
cout<<"请输入这两个顶点是否为邻接点,如果是,输入其权值,否则请输入-1"<<endl;
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++){
cout<<i<<j<<endl;
cin>>x;
minedge[i][j]=x;
}
}
return;
}
void Prim(){
int i;
for(i=1;i<=n;i++)
visited[i]=false;//初始化将所有的点设置成未被访问
for(i=1;i<=n;i++){
if(visited[i]==false)
get_minedge(i);
cout<<a[w].z<<" "<<a[w].f<<" "<<a[w].N<<endl;}
return;
}
void get_minedge(int v){
int i,min;
min=1000;
for(w=1;w<=n;w++){
for(i=1;i<=n;i++){
if(visited[i]==false&&minedge[v][i]<min)
min=minedge[v][i];}
a[w].z=min;//权值
a[w].f=v;//已访问的点
a[w].N=i;}//未被访问的点
for(w=1;w<=n;w++){
if(a[w].z<min){
min=a[w].z;
visited[a[w].N]=true;//将v设置成已被访问过的点
}
}
return;
}
private:
int n;
int visited[max_num];
};
prim::prim()
{
n = 0;
for (int i = 0; i < max_num; i++)
{
visited[i] = 0;
a[i].f = 0;
a[i].N = 0;
a[i].z = 0;
}
}
void main(){
prim p;
p.creatgraph();
p.Prim();
return ;
}