[数据结构总结] 扩展域并查集

简介: 主要用途在题目中明显给出若干个人之间的关系,比如敌对关系或者是派别关系等,然后要求出可以使其互不干扰会有多少对关系,或者是此时的一个权值等等,都可以用到扩展域并查集。在下面的两道例题中,也都是有这种关系。比如在第一个例题关押罪犯中,就有明显的敌对关系,对两个人来讲,他们如果是放到一起,就会发生摩擦,要避免摩擦就要将这两个人放在不同的监狱中。从这个知识点的角度来分析的话,就是要放进不同的域里面一般的话就要开若干倍的n(要看数据范围)具体用法在例题中给出~

扩展域并查集


(非终稿)


主要用途


在题目中明显给出若干个人之间的关系,比如敌对关系或者是派别关系等,然后要求出可以使其互不干扰会有多少对关系,或者是此时的一个权值等等,都可以用到扩展域并查集。在下面的两道例题中,也都是有这种关系。

比如在第一个例题关押罪犯中,就有明显的敌对关系,对两个人来讲,他们如果是放到一起,就会发生摩擦,要避免摩擦就要将这两个人放在不同的监狱中。从这个知识点的角度来分析的话,就是要放进不同的域里面

一般的话就要开若干倍的n(要看数据范围)

具体用法在例题中给出~

题目链接


关押罪犯


Description


S城现有两座监狱,一共关押着N名罪犯,编号分别为1∼N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c的冲突事件。


每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到S城Z市长那里。公务繁忙的Z市长只会去看列表中的第一个事件的影响力,如果影响很坏,他就会考虑撤换警察局长。


在详细考察了N名罪犯间的矛盾关系后,警察局长觉得压力巨大。他准备将罪犯们在两座监狱内重新分配,以求产生的冲突事件影响力都较小,从而保住自己的乌纱帽。假设只要处于同一监狱内的某两个罪犯间有仇恨,那么他们一定会在每年的某个时候发生摩擦。那么,应如何分配罪犯,才能使Z市长看到的那个冲突事件的影响力最小?这个最小值是多少?


Input


输入每行中两个数之间用一个空格隔开。

第一行为两个正整数N和M(N≤20000,M≤100000),分别表示罪犯的数目以及存在仇恨的罪犯对数。

接下来的M行每行为三个正整数aj,bj,cj,表示aj号和bj号罪犯之间存在仇恨,其怨气值为cj。数据保证1≤aj<bj≤N,0<cj≤1,000,000,000,且每对罪犯组合只出现一次。

Output


输出共1行,为Z市长看到的那个冲突事件的影响力。如果本年内监狱中未发生任何冲突事件,请输出0。


Samples


Input 复制

4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884


Output


3512


Hint


罪犯之间的怨气值如下面左图所示,右图所示为罪犯的分配方法,市长看到的冲突事件影响力是 3512(由 2 号和 3 号罪犯引发)。其他任何分法都不会比这个分法更优。

20210413124215887.png

这个题中,我们可以先按照冲突的大小进行从大到小的排序,然后判断这两个人是不是已经在不同的监狱中,如果在同一个监狱中,那么当前的冲突值就是满足题意的冲突值;如果当前两个人不再同一个监狱中,那么就要将这两个人进行不同方式的合并,因为敌人的敌人就是朋友,所以说将a与b的敌人进行合并,将a的敌人与b进行合并,然后就可以了


struct node{
    int a;
    int b;
    int c;
}a[100007];
bool cmp(node a,node b){
    return a.c > b.c;
}
int n,m;
int fa[100007];
void init(){
    for(int i=1;i<=n + n;i++) fa[i] = i;
}
int find(int x){
    if(x == fa[x]) return x;
    else return fa[x] = find(fa[x]);
}
int main() {
    n = read,m = read;
    for(int i=1;i<=m;i++){
        a[i].a=read;
        a[i].b=read;
        a[i].c=read;
    }
    init();
    sort(a+1,a+1+m,cmp);
    for(int i=1;i<=m;i++){
        int x = a[i].a;
        int y = a[i].b;
        int w = a[i].c;
        int fax = find(x);
        int fay = find(y);
        if(fax != fay) {
            fa[fax] = find(n + y);
            fa[fay] = find(x + n);
        }
        else {
            cout<<w<<endl;
            return 0;
        }
    }
    puts("0");
  return 0;
}/// ac_code
目录
相关文章
|
容器
数据结构:并查集
数据结构:并查集
344 0
数据结构:并查集
|
算法 开发者 计算机视觉
燃爆全场!Python并查集:数据结构界的网红,让你的代码炫酷无比!
在编程的世界里,总有一些数据结构以其独特的魅力和高效的性能脱颖而出,成为众多开发者追捧的“网红”。今天,我们要介绍的这位明星,就是Python中的并查集(Union-Find)——它不仅在解决特定问题上大放异彩,更以其优雅的设计和强大的功能,让你的代码炫酷无比,燃爆全场!
313 0
|
机器学习/深度学习 存储
数据结构(九)---并查集
数据结构(九)---并查集
825 5
|
Python
逆天改命!掌握Python并查集,数据结构难题从此不再是你的痛!
在编程旅程中,遇到棘手的数据结构难题是否让你苦恼?别担心,Python并查集(Union-Find)是你的得力助手。这是一种高效处理不相交集合合并及查询的数据结构,广泛应用于网络连通性、社交网络圈子划分等场景。通过维护每个集合的根节点,它实现了快速合并与查询。本文将介绍并查集的基本概念、应用场景以及如何在Python中轻松实现并查集,帮助你轻松应对各种数据结构挑战。
223 3
|
存储 C语言
数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树
本文详细介绍了树与二叉树的应用,涵盖哈夫曼树与哈夫曼编码、并查集以及二叉排序树等内容。首先讲解了哈夫曼树的构造方法及其在数据压缩中的应用;接着介绍了并查集的基本概念、存储结构及优化方法;随后探讨了二叉排序树的定义、查找、插入和删除操作;最后阐述了平衡二叉树的概念及其在保证树平衡状态下的插入和删除操作。通过本文,读者可以全面了解树与二叉树在实际问题中的应用技巧和优化策略。
844 2
|
算法 程序员 图形学
脑洞大开!Python并查集:用最简单的方式,解决最复杂的数据结构问题!
【7月更文挑战第17天】并查集,数据结构明星,处理不相交集合合并与查询。Python实现核心操作:查找与合并。路径压缩优化查找,按秩合并保持平衡。实战应用如图连通性判断,算法竞赛利器。掌握并查集,解锁复杂问题简单解法,照亮编程之旅!
379 10
|
Python
告别低效!Python并查集:数据结构界的超级英雄,拯救你的编程人生!
【7月更文挑战第18天】并查集,数据结构超级英雄,用于不相交集合的合并与查询。Python实现包括初始化、查找根节点和合并操作。应用广泛,如社交网络分析、图论问题、集合划分等。示例代码展示了解决岛屿数量问题,统计连通的“1”单元格数。掌握并查集,提升编程效率,解决复杂问题。
343 6
|
存储 Python
震惊!Python并查集:解锁数据结构新姿势,让你从菜鸟秒变大神!
【7月更文挑战第18天】并查集,一种处理不相交集合的树形数据结构,支持Union(合并)和Find(查询)操作。Python实现中,用字典存储元素及其父节点,初始时每个元素为根。通过路径压缩提高效率。应用包括网络连通性判断、动态连通性检测和集合操作。掌握并查集,提升编程技能,解决复杂问题。开始探索,成为数据结构大师!
301 5
|
算法 数据挖掘 计算机视觉
Python并查集实战宝典:从入门到精通,让你的数据结构技能无懈可击!
【7月更文挑战第17天】并查集,如同瑞士军刀,是解决元素分组问题的利器,应用于好友关系、像素聚类、碰撞检测和连通性分析等场景。本文从基础到实战,介绍并查集的初始化、查找与路径压缩、按秩合并,以及在Kruskal算法中的应用。通过并查集,实现高效动态集合操作,对比哈希表和平衡树,其在合并与查找上的性能尤为突出。学习并查集,提升算法解决复杂问题的能力。
398 5
|
Python
逆天改命!掌握Python并查集,数据结构难题从此不再是你的痛!
【7月更文挑战第18天】并查集,一种神器数据结构,用于处理不相交集合合并与查询,解决网络连通性等难题。Python实现常通过记录元素父节点
387 4

热门文章

最新文章