C++ 我的prim功能不太正常,请帮忙
我应该让它从任何给定的位置开始,但它只是一遍又一遍地打印同一组。任何帮助都将不胜感激C++ 我的prim功能不太正常,请帮忙,c++,arrays,data-structures,graph,C++,Arrays,Data Structures,Graph,我应该让它从任何给定的位置开始,但它只是一遍又一遍地打印同一组。任何帮助都将不胜感激 void graph::primms(int x) { int mincost = 0; int min = infinite; int oldindex; int index; bool mark[num+1]; int a,v; for(int i = 1; i<num+1;
void graph::primms(int x)
{
int mincost = 0;
int min = infinite;
int oldindex;
int index;
bool mark[num+1];
int a,v;
for(int i = 1; i<num+1; i++)
{
mark[i] = false;
}
mark[x] = true;
for(int x = 1; x<num; x++){
for(a =1; a<num+1; a++)
{
for(v=1; v<num+1; v++)
{
if(!mark[v] && !mark[a] && garr[a][v] < min && garr[a][v] > 0)
{
min = garr[a][v];
index = v;
oldindex = a;
}
}
}
mark[v] = true;
cout << oldindex <<" -> "<< index<<endl;
mincost += min;
}
cout<<" total cost is"<<mincost;
}
这是我正在使用的图表:
0 1 2 3 4
1 0 0 0 1
2 0 0 1 3
3 0 1 0 3
4 1 3 3 0
0 1 2 3 4
1 0 0 0 1
2 0 0 1 3
3 0 1 0 3
4 1 3 3 0