最小生成树(Prim算法)

来源:互联网 发布:atheros linux驱动 编辑:程序博客网 时间:2024/06/09 15:59
#include <iostream>#include <cstdio>#include <cstdlib>#include <list>#include <stack>#include <algorithm>using namespace std;int main(){const int max=100000000;  int T;  scanf("%d",&T);  while (T--)  {  int n;  scanf("%d",&n);  int i,j,A[100][100];  int d[100];  bool record[100]={false};  for (i=0;i<=n-1;i++)  for (j=0;j<=n-1;j++)  scanf("%d",&A[i][j]);  for (i=0;i<=n-1;i++)  d[i]=max;  int min;  int pos;  int ans=0;  d[0]=0;  for (i=0;i<=n-1;i++)  {  min=max;  for (j=0;j<=n-1;j++)  if (!record[j] && d[j]<min)  {  pos=j;  min=d[pos];  }  if (min==max)  continue;  ans+=min;  record[pos]=1;  for (j=0;j<=n-1;j++)  if (!record[j] && A[pos][j]<d[j])  d[j]=A[pos][j];  }  printf("%d\n",ans);  }  return 0;}

原创粉丝点击