最小生成树算法——prim算法

prim算法:从某一点开始,去遍历相邻的边,然后将权值最短的边加入集合,同时将新加入边集中的新点遍历相邻的边更新边值集合(边值集合用来找出新的最小权值边),注意每次更新都需将cost数组中的点对应的权值消0,代表已加入集合;

#include<stdio.h>
#include<windows.h>
#define maxv 65535
][];
];
];
void minTree(int n){

   ;i<n;i++){
       arc[i]=;
       cost[i]=a[][i]>? a[][i]:maxv;
   }
   cost[]=;
   ;i<n;i++){
       int min=maxv;
       ;
       ;
       while(j<n){
           &&cost[j]<min){
            min=cost[j];
            k=j;
           }
           j++;
       }
       printf("(%d %d)\n",arc[k],k);
       system("pause");
       cost[k]=;
       ;j<=n;j++){
           &&a[k][j]>&&a[k][j]<cost[j]){
               cost[j]=a[k][j];
               arc[j]=k;
           }
       }
   }
}
int main(){
   int n;
   scanf("%d",&n);
   ;i<n;i++){
    ;j<n;j++){
        scanf("%d",&a[i][j]);
    }
   }
   minTree(n);

}
上一篇:[转] 条件变量(Condition Variable)详解


下一篇:iOS开发之使用XMPPFramework实现即时通信(一)