EOJ 1082. Virtual Friends

题目大意是:a,b是朋友,a,c是朋友,则a,c是朋友, 每一行输入 表示这两人刚刚成为朋友,对每一行输入,需输出,两人所在的朋友圈的人数;

思路:并查集的应用,

用map<string, string> father 储存关系, key值表示结点,value表示key的father; map<string, int> count  ,key值表示根结点,int为该树上总的结点个数; map<string, int> high ,key值为根节点,int为该树的高度, 用于合并时把低的树合并到高数上,防止树退化;

每输入一行,俩个人的名字,就在father中寻找是否有此结点,没有就将该节点建成独立的树,有就不用处理;然后因为两者成为朋友,需将他们的所在的树合并; 合并的时候,注意将低树接到高树的根上,同时修改高树上总的结点数;然后用myfind()函数,查找输入根,得到该树的总结点个数,输出即可;

代码:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值