洛谷 P3367 【模板】并查集
发布日期:2021-05-07 13:07:10 浏览次数:17 分类:精选文章

本文共 571 字,大约阅读时间需要 1 分钟。

前段时间比较忙,今天终于能抽空来好好学学了


并查集

在完成合并和查询操作上有着很大的优势

查询的理想复杂度是 O ( n l o g n ) O(nlogn) O(nlogn)
但出现单链的时候会退化到 O ( n ) O(n) O(n)
所以我们路径压缩
压缩过后的时间复杂度为恒定的 O ( n l o g n ) O(nlogn) O(nlogn) 甚至更低


所以并查集是个好东西

#include
#include
using namespace std;int n,m,f[10100];int z,x,y;int find(int cha) //查询+路径压缩{ if(f[cha]==cha) return cha; return f[cha]=find(f[cha]);}int main(){ cin>>n>>m; for(int i=1; i<=n; i++) f[i]=i; for(int i=1; i<=m; i++) { cin>>z>>x>>y; if(z==1) f[find(x)]=find(f[y]); else { if(find(x)==find(y)) cout<<"Y"<
上一篇:洛谷 P1551 亲戚【并查集】
下一篇:2020.3.14普及C组 牛车(cowcar)【纪中】【模拟】

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年03月28日 18时00分45秒