/**
很裸的模板题;
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int inf=0x3f3f3f3f;
int mmp[110][110],dis[110];
int num;
bool vis[110];
void prime()
{
int k,Min,sum=0;
memset(vis,false,sizeof(vis));
vis[1]=true;
for(int i=1;i<=num;i++)
dis[i]=mmp[1][i];
for(int i=1;i<=num;i++)
{
Min=inf;
for(int j=1;j<=num;j++)
{
if(!vis[j]&&temp>dis[j])
{
temp=dis[j];
k=j;
}
}
if(Min==inf) break;
vis[k]=true;
sum+=Min;
for(int j=1;j<=num;j++)
{
if(!vis[j]&&dis[j]>mmp[k][j])
dis[j]=mmp[k][j];
}
}
printf("%d\n",sum);
}
int main()
{
int a,b,c,tem,result;
while(scanf("%d",&num)!=EOF&&num)
{
memset(mmp,inf,sizeof(mmp));
tem=(num*(num-1))/2;
for(int i=1;i<=tem;i++)
{
scanf("%d %d %d",&a,&b,&c);
mmp[a][b]=mmp[b][a]=c;
}
prime();
}
return 0;
}
HDU - 1233 还是畅通工程 prim算法(裸模板)
最新推荐文章于 2020-01-28 18:22:02 发布