prim有意思。。。

#include<iostream>
#include<cstdio>
#define inf 99999999
using namespace std;
const int maxn=1010;
int a[maxn][maxn],dis[maxn],p[maxn];
int maxin(){
  int i,j,k,m,n,sum=0,ans=0;
  scanf("%d%d",&n,&m);
  for(i=1;i<=n;i++)dis[i]=inf;
  for(i=1;i<=n;i++)
	  for(j=1;j<=n;j++){
	    a[i][i]=1;
		a[i][j]=inf;
	  }
  while(m--){
    int x,y,z;
	scanf("%d%d%d",&x,&y,&z);
	a[x][y]=z;
	a[y][x]=z;
  }
  for(i=1;i<=n;i++)dis[i]=a[1][i];
  p[1]=1;
  sum++;
  for(i=1;i<=n;i++){
	int mina=inf;
	for(j=1;j<=n;j++)
    if(!p[j]&&dis[j]<mina){mina=dis[j];k=j;};
    p[k]=1;
	ans+=dis[k];
	for(j=1;j<=n;j++){
	  if(!p[j]&&dis[j]>a[k][j]){
	    dis[j]=a[k][j];
	  }
	}
  }
  return 0;
}

posted @ 2016-09-03 11:09  Drinkwater_cnyali  阅读(101)  评论(0编辑  收藏  举报