首页 > Web开发 > 详细

poj 1258 Agri-Net(最小生成树)

时间:2015-07-24 14:24:11      阅读:128      评论:0      收藏:0      [点我收藏+]
#include<bits/stdc++.h>
using namespace std;
const int inf=1<<24;

int main()
{
    int n,i,j,k,e[50][50],u,v,w,low[50],ans;
    char s;
    while(~scanf("%d",&n))
    {
        if(n==0) break;
        memset(e,0,sizeof(e));
        getchar();
        for(i=0;i<n-1;i++)
        {
            scanf("%c %d",&s,&k);
            u=s-‘A‘;
            for(j=0;j<k;j++)
            {
                getchar();
                scanf("%c %d",&s,&w);
                v=s-‘A‘;
                e[u][v]=e[v][u]=w;
            }
            getchar();
        }

        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
        {
            if(!e[i][j]) e[i][j]=inf;
        }

        for(i=0;i<n;i++)
        {
            low[i]=e[0][i];
        }
        low[0]=-1;
        ans=0;
        for(i=1;i<n;i++)
        {
            int t=inf;
            for(k=0;k<n;k++)
            {
                if(low[k]!=-1&&low[k]<t)
                {
                    t=low[k];
                    j=k;
                }
            }
            ans+=t;
            low[j]=-1;
            for(k=0;k<n;k++)
            {
                low[k]=min(e[j][k],low[k]);
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

poj 1258 Agri-Net(最小生成树)

原文:http://blog.csdn.net/xinag578/article/details/47039579

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!