并查集

P3367 【模板】并查集

题目背景

本题数据范围已经更新到 1\le N\le 2\times 10^51\le M\le 10^6

题目描述

如题,现在有一个并查集,你需要完成合并和查询操作。

输入格式

第一行包含两个整数 N,M ,表示共有 N 个元素和 M 个操作。

接下来 M 行,每行包含三个整数 Z_i,X_i,Y_i

Z_i=1 时,将 X_iY_i 所在的集合合并。

Z_i=2 时,输出 X_iY_i 是否在同一集合内,是的输出Y ;否则输出 N

输出格式

对于每一个 Z_i=2 的操作,都有一行输出,每行包含一个大写字母,为 Y 或者 N

输入输出样例 #1

输入 #1

4 7
2 1 2
1 1 2
2 1 2
1 3 4
2 1 4
1 2 3
2 1 4

输出 #1

N
Y
N
Y


说明/提示

对于 15\% 的数据,N \le 10M \le 20

对于 35\% 的数据,N \le 100M \le 10^3

对于 50\% 的数据,1\le N \le 10^41\le M \le 2\times 10^5

对于 100\% 的数据,1\le N\le 2\times 10^51\le M\le 10^61 \le X_i, Y_i \le NZ_i \in \{ 1, 2 \}

题解

代码

#include<stdio.h>
int arr[200005],high[200005];
int n,t,z,x,y;

int find(int x){
    return x==arr[x] ? x: find(arr[x]);
}
void con(int x,int y){
    x=find(x);
    y=find(y);
    if (high[x]==high[y]){
        arr[x]=arr[y];
        high[y]+=1;

    }
    else{
        if (high[x]>high[y]) arr[y]=arr[x];
        else      arr[x]=arr[y];
    }
}
int main(){
    scanf("%d %d",&n,&t) ;
    for (int i=1 ;i<n+1;i++){
        arr[i]=i;
        high[i]=0;
    }
    while (t--)
    {
        scanf("%d %d %d",&z,&x,&y);
        if (z==1){
            con(x,y);
        }
        else{
            if (find(x)!=find(y)){
                printf("N\n");
            }
            else{printf("Y\n");}
        }
    }
    return 0;
}

解析

这是并查集模板题,主要是合并和查询,一开始没有优化,超时了,后面加了合并优化通过了

全部评论

相关推荐

我报的技术方向。之前刷题比较多所以编程题感觉还行,不过第三题还是很难的,最后没ac。选择题就比较懵了,前面好几道全是大模型相关的,什么SFT之类的,有的题选项看着都差不多,只能靠感觉选了。后面几道计算机基础的选择题的还好,正常八股文难度,应该没啥大问题。说一下编程题吧。第一题,给个区间问有多少个因子数量是奇数的数。这玩意就是个简单数论,以前刷题多的话一眼就能看出来,只有完全平方数的因子数量是奇数个,相当于求区间的完全平方数数量,直接秒了。第二题,超级斐波那契,前k项是1,后面每项是前k项的和。直接写暴力肯定超时,想了一下发现相邻两项做个差就能把求和消掉,这道题比较快也ac了。第三题是个图论,每个节点的权值是它当前的度数加上编号,然后支持删边和查询连通块最大权值。删边会导致度数发生变化,权值也会跟着变。这种删边问题很容易想到离线,把操作反过来,这样删边就变成加边了,可以直接用并查集来维护。不过这题估计是细节写挫了,最后wa了几个点没调出来,还是很寄的,考完不知道最后排名咋样。总体来说感觉还可以吧,感觉前一段时间刷牛客的公司真题挺有用的。我刚刚发现上周考的美团真题已经上了:https://www.nowcoder.com/exam/company?questionJobId=10&amp;subTabName=written_page&nbsp;,把第三题重新写了一下,最后ac了。感觉还是考场上紧张导致最后wa了。选择题这方面大家有没有学习的资料啊,感觉ai这些啥都不会啊,有没有大佬教教QWQ
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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