POJ 1251 Jungle Roads

\(MST\)裸题。

struct Node
{
    int a,b,c;
    bool operator<(const Node &W) const
    {
        return c < W.c;
    }
}e[80];
int p[30];
int n,m;

int find(int x)
{
    if(x != p[x]) p[x]=find(p[x]);
    return p[x];
}

int kruskal()
{
    for(int i=0;i<n;i++) p[i]=i;

    sort(e,e+m);

    int res=0;
    for(int i=0;i<m;i++)
    {
        int a=e[i].a,b=e[i].b,c=e[i].c;
        int pa=find(a),pb=find(b);
        if(pa != pb)
        {
            p[pa]=pb;
            res+=c;
        }
    }
    return res;
}

int main()
{
    while(cin>>n && n)
    {
        m=0;
        for(int i=0;i<n-1;i++)
        {
            char a;
            int k;
            cin>>a>>k;
            for(int j=0;j<k;j++)
            {
                char b;
                int w;
                cin>>b>>w;
                e[m++]={a-'A',b-'A',w};
            }
        }

        cout<<kruskal()<<endl;
    }

    //system("pause");
    return 0;
}
posted @ 2021-03-02 16:07  Dazzling!  阅读(35)  评论(0编辑  收藏  举报