题解 | #第一题#

第一题

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

//就是最原始的并查集
#include <iostream>
using namespace std;

int father[1000000];
int height[1000000];
int visit[1000000];
void Initial()
{
    for(int i=0;i<1000000;i++)
    {
        father[i]=i;
        height[i]=0;
        visit[i]=0;
    }
}

int Find(int x)
{
    if(father[x]==x)return x;
    else 
    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 main() {
    int a, b;
    Initial();
    while (cin >> a >> b) { 
        Union(a,b);
        visit[a]=1;
        visit[b]=1;
    }
    int root=0;
    for(int i=0;i<1000000;i++)
    {
        if(visit[i]){
            if(i==Find(i))root++;
        }
    }
    cout<<root<<endl;
}

全部评论

相关推荐

前段时间投boss,实在没绷住,就发出来吧
测开小登的自我救赎:这种就别较真了,感觉应该是那种吃上了学历贬值的时代红利感觉自己也能找一堆92硕士的边角料小公司吧
点赞 评论 收藏
分享
LXXXXd:有点杂,想搞自动化的话没必要把法律的经历写上去
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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