最小生成树n*n模版

来源:互联网 发布:天数倒计时软件 编辑:程序博客网 时间:2024/06/06 17:40

n方算法

#include <stdio.h>#include <string.h>#include <stdlib.h>#define INF 1<<28const int maxn=5007;  int cost[maxn][maxn];  int lowcost[maxn],v[maxn];  int s,m,n,k,i;void init()  {    int i,j,w;    scanf("%d",&n);    for(i=1;i<=n;++i)      for(j=1;j<=n;++j)            scanf("%d",&cost[i][j]);    s=0;  }void prim(){    int i,j,k,t,mn;    for(i=1;i<=n;++i)      lowcost[i]=cost[1][i];    v[1]=1;    for(i=1;i<n;++i)      {        mn=INF;        for(j=1;j<=n;++j)          if ((lowcost[j]<mn) && (v[j]==0))            {                   mn=lowcost[j];                   k=j;            }        s=s+mn;        v[k]=1;        for(j=1;j<=n;++j)          if (cost[k][j]<lowcost[j])             lowcost[j]=cost[k][j];      }  }void print(){  printf("%d\n",s);}int main(){  init();  prim();  print();}
0 0
原创粉丝点击