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】关押罪犯(并查集补集,拆点)相关推荐

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

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

  2. [NC16591]关押罪犯 并查集

    题解:很明显的并查集,但因为它们带有权值,所以我们先要把他排序,我们要尽可能让危害大的罪犯在两个监狱里(这里有一点贪心的味道). 1.首先我们把它门按照之间的影响值从大到小排序. 2.假设a与b是敌人 ...

  3. 关押罪犯 并查集~~~

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

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

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

  5. 【HDU 6411】带劲的and和 【并查集 + 二进制拆位】

    度度熊专门研究过"动态传递闭包问题",他有一万种让大家爆蛋的方法:但此刻,他只想出一道简简单单的题--至繁,归于至简 度度熊有一张n个点m条边的无向图,第i个点的点权为viviv_ ...

  6. codevs1069 关押罪犯

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

  7. 【Baltic2003】【BZOJ1370】Gang团伙(并查集,拆点)

    problem 给定n个人 朋友的朋友是朋友,敌人的敌人是朋友 朋友之间组成一个团伙,求团伙数 solution 将每个点x拆成两个:x和x+n(分别表示x的朋友和敌人) 如果x和y是朋友,就将x和y ...

  8. NOIP2010关押罪犯题解(洛谷P1525) (并查集)

    NOIP2010关押罪犯题解(洛谷P1525) (并查集) 日常膜拜dalao:财神万岁!!!!!!!!!!!!!!!!!!!!! 日常凌晨三点水题解..(原谅我中间断更了几天,,马上分班考试了竞赛顾 ...

  9. 并查集的补集 (关押罪犯)

    定义元素T的逆为t,t一定不在包含T的集合里 因为对于两个需要分配在不同集合的元素A.B,我们并不知道具体该怎么分,所以就令元素A和b在一起,元素B和a在一起. 避免了直接分配A,B到哪一个集合的问题 ...

最新文章

  1. win10安装docker desktop之后没有ADVANCED选项解决办法
  2. Vue.js-Day09【项目实战(附带 完整项目源码)-day04:用户个人中心页面、用户登录页面、将项目打包部署到服务器上、项目汇报、实训心得】
  3. 《算法竞赛进阶指南》0.5排序
  4. 402. 移掉K位数字 golang
  5. mybatis 依赖于jdbc_使用基础mybatis代替原始jdbc
  6. JQuery 使用技巧
  7. easyUI——easyUI(入门)
  8. 计算机常见的三种拓扑结构,局域网拓扑结构(常见三种)
  9. 不伤眼睛的文字背景色
  10. 制造业OEER语言数据挖掘之人工神经网络探索
  11. 咱们玩家最幽默(关于《无极》)
  12. 100%正确率识别票据从金融领域切入挖掘文字识别的巨大价值
  13. 如何判断一个数的二进制中1的个数(num = (num - 1))
  14. 计算机系统的组成基础知识,计算机系统的组成基础知识.ppt
  15. 全球人造丝卫生棉条行业调研及趋势分析报告
  16. 可视化入门:从 0 到 1 开发一个图表库
  17. CVE-2017-7494紧急预警:Samba蠕虫级提权漏洞,攻击代码已在网上扩散
  18. 【无NK ZOOM KOBE 5 Protro ”Bruce Lee“S2纯原生产线 科比五代李小龙
  19. Linux报You might want to save “/run/initramfs/rdsosreport.txt“ to a USB stick or /boot after mounting
  20. 调用smooth函数进行加噪数据的平滑处理

热门文章

  1. 周志华《机器学习》读书笔记与习题答案(持续更新)
  2. 推理集 —— 特殊的空间
  3. 栈的典型应用 —— 延迟缓冲
  4. 图像(帧)分块机制(patch mechanism)
  5. excel 日期加时间java程序里被转成浮点型_Java工具类之:包装类
  6. atop用法_atop 使用详情
  7. python爬虫怎么挣钱-月薪45K的Python爬虫工程师告诉你爬虫应该怎么学,太详细了!...
  8. python基础教程-Python基础教程,Python入门教程(非常详细)
  9. python画散点图-python学习之matplotlib绘制散点图实例
  10. python从入门到放弃-python从入门到放弃--day1