题解 | #Jungle Roads#

Jungle Roads

https://www.nowcoder.com/practice/75c19b92d6b942f08989b335afbc73c3

#include <iostream>
#include <algorithm>
using namespace std;


struct Edge{
    double from;
    double to;
    double length;
    bool operator<(const Edge& edge) const{
        return length<edge.length;
    }
};

Edge edge[330];//从0开始
int father[26];
int height[26];


void Initial()//每个点都作为根节点,高度都为0
{
    for(int i=0;i<100;i++)
    {
        father[i]=i;
        height[i]=0;
    }
}

int Find(int x)
{
    if(x==father[x])return x;
    return Find(father[x]);
}

void Union(int a,int b)
{
    a=Find(a);
    b=Find(b);
    if(a!=b)
    {
        if(height[a]>height[b])father[b]=a;
        else  if(height[a]<height[b])father[a]=b;
        else
         {
            father[b]=a;height[a]++;
         }
    }
}

int Kruskal(int n,int enumber)
{
    int answer=0;
    for(int i=0;i<enumber;i++)
    {
        if(Find(edge[i].from)!=Find(edge[i].to))
        {
            Union(edge[i].from,edge[i].to);
            answer+=edge[i].length;
        }
    }
    return answer;
}


int main() {
    int n;
    while (cin >>n) { 
        if(n==0)break;

        int edgenumber=0;
        for(int i=0;i<n-1;i++)
        {
            char from;cin>>from;
            int number;cin>>number;
            if(number==0)continue;
            for(int j=1;j<=number;j++)
            {
                char to;cin>>to;
                int len;cin>>len;
                edge[edgenumber].from=from-'A';
                edge[edgenumber].to=to-'A';
                edge[edgenumber].length=len;
                edgenumber++;
            }
        }
        sort(edge,edge+edgenumber);
        Initial();
        cout<<Kruskal(n,edgenumber)<<endl;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务