• hdu 1301 Jungle Roads


    #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
    ",ans);
        }
        return 0;
    }

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

  • 相关阅读:
    内置函数详解
    lambda函数
    第八章(5)
    第八章(4)
    第八章(3)
    第八章(2)
    第八章(1)
    第七章(3)
    第七章(2)
    第七章(1)
  • 原文地址:https://www.cnblogs.com/xryz/p/4847912.html
Copyright © 2020-2023  润新知