当前位置: 首页 > news >正文

洛谷 P3367 【模板】并查集 C++

题目背景

本题数据范围已经更新到 1≤N≤2×10 5 ,1≤M≤10 6 。

题目描述

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

输入格式

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

接下来 M 行,每行包含三个整数 Z i ​ ,X i ​ ,Y i ​ 。

当 Z i ​ =1 时,将 X i ​ 与 Y i ​ 所在的集合合并。

当 Z i ​ =2 时,输出 X i ​ 与 Y i ​ 是否在同一集合内,是的输出 Y ;否则输出 N 。

输出格式

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

输入输出样例

输入 #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≤10,M≤20。

对于 35% 的数据,N≤100,M≤10 3 。

对于 50% 的数据,1≤N≤10 4 ,1≤M≤2×10 5 。

对于 100% 的数据,1≤N≤2×10 5 ,1≤M≤10 6 ,1≤X i ​ ,Y i ​ ≤N,Z i ​ ∈{1,2}。

完整代码

#include<bits/stdc++.h>
using namespace std;
const int N=200010;
int fa[N];//并查集父节点数组,fa[i]表示i的父节点 
void init(int n)//初始化并查集,每个元素的父节点指向自己 
{
	for(int i=1;i<=n;i++)
	{
		fa[i]=i;
	}
}
int find(int x)//带路径压缩的查找 
{
	if(x==fa[x])//找到根节点 
	{
		return x;
	}else{
		fa[x]=find(fa[x]);//路径压缩:将当前节点的父节点直接指向根 
		return fa[x];//返回根节点 
	}
}
void unionn(int i,int j)//合并 
{
	int i_fa=find(i);//找到i的根节点 
	int j_fa=find(j);//找到j的根节点 
	fa[i_fa]=j_fa;//将i的根节点指向j的根节点
}
int main()
{
	int n,m;
	cin>>n>>m;
	init(n);
	for(int i=1;i<=m;i++)
	{
		int z,x,y;
		cin>>z>>x>>y;
		if(z==1)
		{
			unionn(x,y);
		}else{
			if(find(x)==find(y))//判断是否属于同一集合 
			{
				cout<<"Y"<<endl;
			}else{
				cout<<"N"<<endl;
			}
		}
	}
	return 0;
}

http://www.dtcms.com/a/118471.html

相关文章:

  • [原创](Modern C++)现代C++的关键性概念: std::move()可以理解为把数据进行剪切再粘贴.
  • BGP路由协议之解决 IBGP 水平分割带来的问题
  • 【Tauri2】016——后端Invoke结构体和invoke_key
  • opus+ffmpeg+c++实现录音
  • Windwos的DNS解析命令nslookup
  • Linux系统的不同发行版的常用命令
  • 大储EMS能量管理系统解决方案:助力企业实现智慧能源转型
  • SSM框架相关面试题
  • Vue3实战七、登录认证与退出登录
  • Spring AOP 核心的技术之一:动态代理
  • 其他合成方式介绍
  • nacos集群部署
  • 【redis】summary
  • rust 同时处理多个异步任务,并在一个任务完成退出
  • PythonJSON解析如何优雅处理嵌套JSON字符串
  • springboot中使用async实现异步编程
  • Docker Compose 部署Nginx反向代理 tomcat
  • 每日算法-250407
  • 数字经济产业标杆:树莓集团如何塑造产业服务价值体系
  • 没有独立显卡如何安装torch
  • 极简设计的力量:用 `apiStore` 提升项目效率与稳定性
  • oracle查询是否锁表了
  • Objective-C语言的编程范式
  • 昇腾910b多机部署deepseek-r1-w8a8量化全攻略
  • Hive 常见面试 300 问
  • leetcode 368. 最大整除子集 中等
  • Scala(六)
  • Matlab绘图—‘‘错误使用 plot输入参数的数目不足‘‘
  • 工程项目中通讯协议常见问题
  • 零代码构建AI知识库:基于亮数据网页抓取API的维基百科数据自动化采集实战