定义元素T的逆为t,t一定不在包含T的集合里

因为对于两个需要分配在不同集合的元素A、B,我们并不知道具体该怎么分,所以就令元素A和b在一起,元素B和a在一起。

避免了直接分配A,B到哪一个集合的问题!!!

自己模拟最快明白

例题:关押罪犯2010年NOIP全国联赛提高组

#include <bits/stdc++.h>
using namespace std;
const int MAX = 100000 + 10;
int i,j,n,m,x,y;
int f[MAX];
struct angry
{int p1,p2,nu;
}ang[MAX];
bool com(angry a,angry b)
{return    a.nu>b.nu;
}
int getf(int t)
{return f[t]=f[t]==t?t:getf(f[t]);
}
int main()
{scanf("%d%d",&n,&m);for(i = 1; i <= n*2; i++)    f[i]=i;for(i = 1; i <= m; i++) scanf("%d%d%d",&ang[i].p1,&ang[i].p2,&ang[i].nu);sort(ang+1,ang+1+m,com);for(i = 1; i <= m; i++){x=getf(ang[i].p1),y=getf(ang[i].p2);if(x==y){printf("%d",ang[i].nu);return 0;}    f[x] = getf( ang[i].p2 + n);//间接分配集合f[y] = getf( ang[i].p1 + n);}printf("0");//注意特殊情况return 0;
}

转载于:https://www.cnblogs.com/callmebg/p/7619829.html

并查集的补集 (关押罪犯)相关推荐

  1. [NOIP2010]关押罪犯

    题目描述 Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用&quo ...

  2. 【NOIP2010】【codevs1069】关押罪犯(并查集补集,拆点)

    problem 有n个罪犯和m对关系(表示两个罪犯的怨气值) 有2座监狱分别关押他们,当2个罪犯在同一个监狱时怒气值就会爆发. 如何分配让所有产生的怨气值中最大的怨气值最小,输出该怨气值. solut ...

  3. 【原创】并查集之扩展域与边带权

    [前言] 并查集是一种可以动态维护若干个不重叠的集合,并支持合并于查询的数据结构. 并查集的基本概念很简单,但是这样一种思想的用途十分广泛. 个人理解:这是一种很巧妙的,可以很好的处理对象之间关系的数 ...

  4. noip2010关押罪犯

    https://www.zybuluo.com/ysner/note/1334611 居然开始写水题题解了,noip退役预定 题面 戳我 解析 这道题似乎有三种做法: 并查集 我们知道,如果要求两个人 ...

  5. P1525关押罪犯(并查集补集)

    问题传送门 问题描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1-N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值&qu ...

  6. 关押罪犯-并查集、贪心

    题目来源:Acwing 257.关押罪犯&洛谷 P1525 [NOIP2010 提高组] 关押罪犯 思路来源:这里 题目描述 S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N. 他 ...

  7. CH - 4901 关押罪犯(二分图判定+二分/并查集)

    题目链接:点击查看 题目大意:一共有n个罪犯,有m对仇人,每对仇人都有一个仇恨值,如果两个仇人在一起的话,会对监狱造成等价于仇恨值的损失,现在有两个监狱,可以将罪犯们分开关押,问监狱的最小损失是多少 ...

  8. 专题突破三之并查集Ⅱ——星球大战,In Touch,方格染色,Junk-Mail Filter,关押罪犯,Silver Woods,Must Be Rectangular!

    文章目录 [JSOI2008]星球大战 In Touch 方格染色 Junk-Mail Filter [NOIP2010 提高组] 关押罪犯 Silver Woods Must Be Rectangu ...

  9. 并查集——关押罪犯(洛谷 P1525)

    题目选自洛谷P1525 此题是一道很经典,而且很好的题目.思路也十分的新颖,比较的难以捉摸. 题面大意:(人性翻译) 给你m对矛盾关系,每对关系分别涉及到x,y两人,矛盾值为w 请你判断分配x和y到两 ...

最新文章

  1. SNMP在windows linux router上的配置笔记
  2. Python常见编译错更新
  3. VC6导入和使用二进制资源
  4. Native snappy library not available: this version of libhadoop was built without snappy support
  5. 树的存储结构-双亲表示法
  6. html to docx
  7. 【Python】Python中的引用和赋值
  8. HDU 5928 DP 凸包graham
  9. android h5链接蓝牙,h5+runtime Native.js 混合APP连接蓝牙打印机
  10. 【数据结构笔记19】File Transfer的C语言实现,集合的简化表示,按秩归并,路径压缩
  11. C#进阶高级程序员开发必知必会:泛型的定义实操案例: 实现堆栈的后进先出功能
  12. python系列之:字典update
  13. Java文字转语音功能实现
  14. Js中${}字符串拼接
  15. 二维码(微信二维码)缓存问题的解决方法
  16. 【Java项目】好客租房——数据库集群部署
  17. 外星飞船CSS3动画代码
  18. 666666666666.com路路解密破解游戏第一部23题攻略
  19. Minio 在Linux环境部署报错error occured ErrorResponse(code=InternalError, message=We encountered an internal
  20. 基于深度学习的人脸性别识别系统(含UI界面,Python代码)

热门文章

  1. 4.3.2 用jQuery进行异步加载(2)
  2. N皇后问题位运算符解法【转载】
  3. Ubuntu16.4 将python3.5重新切换为python2.7后,pip运行出错
  4. 随机样本一致性:一种用于图像分析和自动制图的模型拟合模型(2)--(P3P)
  5. OpenCV--矩阵操作总结
  6. edu汇编语言——实训课程
  7. B. Who‘s Opposite?
  8. Python GUI界面编程初步 02 - Tkinter基础
  9. Redmine Gantt 实现 (Show relations in Gantt diagram)
  10. String和QString之间的转化----可避免出现中文乱码的现象