题解 | #第一题#

第一题

http://www.nowcoder.com/practice/7c29cdfa28274c86afc9e88c07448a10

并查集简单运用

#include<iostream>
#include<map>
using namespace std;
map<int,int> mp;
int find(int x){
    if(x != mp[x])
        return mp[x] = find(mp[x]);
    return mp[x];
}
int main()
{
    int a,b,cnt = 0;
    while(cin >> a >> b && a && b){
        if(mp.find(a) == mp.end())
            mp[a] = a;
        if(mp.find(b) == mp.end())
            mp[b] = b;
        int c1 = find(a);
        int c2 = find(b);
        if(c1 == c2)continue;
        else
            mp[c1] = c2;
    }
    for(auto it : mp)
        if(it.first == it.second)
            cnt++;
    cout << cnt;
}
全部评论

相关推荐

11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
6 收藏 评论
分享
牛客网
牛客企业服务