【NOIP2010】【codevs1069】关押罪犯(并查集补集,拆点)
problem
- 有n个罪犯和m对关系(表示两个罪犯的怨气值)
- 有2座监狱分别关押他们,当2个罪犯在同一个监狱时怒气值就会爆发。
- 如何分配让所有产生的怨气值中最大的怨气值最小,输出该怨气值。
solution
- 将每个点x拆成两个:x和x+n(分别表示与x同一个监狱的,与x不同监狱的)
- 将怨气关系从大到小排序,对于未分配的,将他们分配到不同监狱。即合并(x,x+n).
- 直到遇到第一个在同一个监狱的值,输出并结束程序。
codes
//并查集及补集
//凡是与i+n节点在同一个集合里的,都是不能与i在同一个集合里的。
#include<iostream>
#include<algorithm>
using namespace std;
struct Edge{ int u, v, w; }e[100010];
bool cmp(Edge a, Edge b){ return a.w>b.w; }
int fa[20010<<1];
void init(int n){ for(int i = 1; i <= n; i++)fa[i]=i; }
int find(int x){ return x==fa[x]?x:fa[x]=find(fa[x]); }
void merge(int x, int y){ x=find(x);y=find(y);if(x!=y)fa[x]=y;}
int main(){int n, m;cin>>n>>m;for(int i = 1; i <= m; i++)cin>>e[i].u>>e[i].v>>e[i].w;sort(e+1,e+m+1,cmp);init(n<<1);for(int i = 1; i <= m; i++){int u = e[i].u, v = e[i].v;if(find(u) == find(v)){cout<<e[i].w<<"\n"; return 0;}merge(u+n, v);merge(v+n, u);}cout<<0<<"\n";//....return 0;
}
【NOIP2010】【codevs1069】关押罪犯(并查集补集,拆点)相关推荐
- 关押罪犯-并查集、贪心
题目来源:Acwing 257.关押罪犯&洛谷 P1525 [NOIP2010 提高组] 关押罪犯 思路来源:这里 题目描述 S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N. 他 ...
- [NC16591]关押罪犯 并查集
题解:很明显的并查集,但因为它们带有权值,所以我们先要把他排序,我们要尽可能让危害大的罪犯在两个监狱里(这里有一点贪心的味道). 1.首先我们把它门按照之间的影响值从大到小排序. 2.假设a与b是敌人 ...
- 关押罪犯 并查集~~~
关押罪犯 S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨 气值"(一 ...
- P1525关押罪犯(并查集补集)
问题传送门 问题描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1-N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值&qu ...
- 【HDU 6411】带劲的and和 【并查集 + 二进制拆位】
度度熊专门研究过"动态传递闭包问题",他有一万种让大家爆蛋的方法:但此刻,他只想出一道简简单单的题--至繁,归于至简 度度熊有一张n个点m条边的无向图,第i个点的点权为viviv_ ...
- codevs1069 关押罪犯
题目描述 Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极 不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用&q ...
- 【Baltic2003】【BZOJ1370】Gang团伙(并查集,拆点)
problem 给定n个人 朋友的朋友是朋友,敌人的敌人是朋友 朋友之间组成一个团伙,求团伙数 solution 将每个点x拆成两个:x和x+n(分别表示x的朋友和敌人) 如果x和y是朋友,就将x和y ...
- NOIP2010关押罪犯题解(洛谷P1525) (并查集)
NOIP2010关押罪犯题解(洛谷P1525) (并查集) 日常膜拜dalao:财神万岁!!!!!!!!!!!!!!!!!!!!! 日常凌晨三点水题解..(原谅我中间断更了几天,,马上分班考试了竞赛顾 ...
- 并查集的补集 (关押罪犯)
定义元素T的逆为t,t一定不在包含T的集合里 因为对于两个需要分配在不同集合的元素A.B,我们并不知道具体该怎么分,所以就令元素A和b在一起,元素B和a在一起. 避免了直接分配A,B到哪一个集合的问题 ...
最新文章
- win10安装docker desktop之后没有ADVANCED选项解决办法
- Vue.js-Day09【项目实战(附带 完整项目源码)-day04:用户个人中心页面、用户登录页面、将项目打包部署到服务器上、项目汇报、实训心得】
- 《算法竞赛进阶指南》0.5排序
- 402. 移掉K位数字 golang
- mybatis 依赖于jdbc_使用基础mybatis代替原始jdbc
- JQuery 使用技巧
- easyUI——easyUI(入门)
- 计算机常见的三种拓扑结构,局域网拓扑结构(常见三种)
- 不伤眼睛的文字背景色
- 制造业OEER语言数据挖掘之人工神经网络探索
- 咱们玩家最幽默(关于《无极》)
- 100%正确率识别票据从金融领域切入挖掘文字识别的巨大价值
- 如何判断一个数的二进制中1的个数(num = (num - 1))
- 计算机系统的组成基础知识,计算机系统的组成基础知识.ppt
- 全球人造丝卫生棉条行业调研及趋势分析报告
- 可视化入门:从 0 到 1 开发一个图表库
- CVE-2017-7494紧急预警:Samba蠕虫级提权漏洞,攻击代码已在网上扩散
- 【无NK ZOOM KOBE 5 Protro ”Bruce Lee“S2纯原生产线 科比五代李小龙
- Linux报You might want to save “/run/initramfs/rdsosreport.txt“ to a USB stick or /boot after mounting
- 调用smooth函数进行加噪数据的平滑处理
热门文章
- 周志华《机器学习》读书笔记与习题答案(持续更新)
- 推理集 —— 特殊的空间
- 栈的典型应用 —— 延迟缓冲
- 图像(帧)分块机制(patch mechanism)
- excel 日期加时间java程序里被转成浮点型_Java工具类之:包装类
- atop用法_atop 使用详情
- python爬虫怎么挣钱-月薪45K的Python爬虫工程师告诉你爬虫应该怎么学,太详细了!...
- python基础教程-Python基础教程,Python入门教程(非常详细)
- python画散点图-python学习之matplotlib绘制散点图实例
- python从入门到放弃-python从入门到放弃--day1