算法模板:输入输出,并查集

一、输入输出

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;
#define int long long
#define endl '\n'

void solve()
{
	
}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int _ = 1;
//	cin >> _;
	while(_--)
	{
		solve();
	}
	return 0;
}

二、并查集

Disjoint Set Union

中文:不相交集合合并 / 并查集

cpp 复制代码
struct DSU
{
	vector<int> fa, sz;
	DSU(int n) 
		:fa(n + 1)
		,sz(n + 1, 1) 
	{
		iota(fa.begin(), fa.end(), 0);	
	}
	int find(int x)
	{
		while(x != fa[x]) x = fa[x] = fa[fa[x]];
		return x;
	}
	int size(int x) 
	{
		return sz[find(x)];
	}
	bool same(int x, int y)
	{
		return find(x) == find(y);
	}
	bool merge(int x, int y)
	{
		x = find(x), y = find(y);
		if(x == y) return false;
		// 如果x的集合更大,就交换x和y,保证把小的挂到大的上
		if(sz[x] > sz[y]) swap(x, y);
		sz[y] += sz[x];
		fa[x] = y;
		return true;
	}
};
相关推荐
Dr.kangder2 分钟前
嵌入式面试总结(十九)——内存泄露
单片机·算法·面试·职场和发展·架构·硬件架构
萧瑟余晖7 分钟前
Java深入解析篇三十之Java日志框架
java·开发语言
Herbert_hwt21 分钟前
【C语言基础】常量、选择结构与运算符全解析
c语言·开发语言·算法
AI视觉网奇37 分钟前
动作识别 视频理解大模型
开发语言·python·音视频
Suxing91 小时前
C语言基础分享:从“租房”到“拆迁”,C语言动态内存管理
java·数据结构·算法
减瓦1 小时前
别让 Java 版本选择变成生产事故
java
ikun_文1 小时前
Java集合框架Collection拓展进阶
java·java ee
SomeB1oody1 小时前
【RustyML入门】3.8. 正则化与归一化层
开发语言·后端·机器学习·rust·教程
__zRainy__1 小时前
Node系列 · Node基础:全局变量与全局对象
开发语言·前端·javascript
码匠许师傅1 小时前
【C++ 面试真题】聊聊 C++ 的虚函数和多态
java·c++·面试