题解 | #第一题# 简便的并查集做法

第一题

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

#include <iostream>
using namespace std;

const int N = 1000100;

int p[N];
int e[N];
bool st[N];

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

int main() {
    for(int i = 0; i < N; i++) p[i] = i;

    int a, b;
    int res = 0, j = 0;
    while(cin >> a >> b)
    {
        p[find(a)] = find(b);
        e[j++] = a;
        e[j++] = b;
    }

    for(int i = 0; e[i] != 0; i++) 
        if(!st[e[i]] && find(e[i]) == e[i]) 
        {
            st[e[i]] = true;
            res++;
        }
            
    cout << res << endl;
}

全部评论

相关推荐

offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务