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