noip2010关押罪犯 带权并查集
来源:互联网 发布:接收http报文数据 编辑:程序博客网 时间:2024/06/04 00:44
题意:
给你1~n个罪犯,ai与bi在一个监狱会产生仇恨值为ci。问如何将这n个罪犯分配到2个监狱中,使最大仇恨值最小。
由于要使最大仇恨值最小,所以我们将仇恨值降序。对于每个ai,bi判断是否能使他们不在一个监狱中,可以就把状态记录下来,否则就输出。
fa[i]存的是与i是同个连通块的,,fa[i+n]是与i必须不是一个连通块的。因为与ai在一个连通块的必定要与bi不在一个连通块,ai也得与不与bi在一个连通块的连通块连通(因为只有俩个监狱),所以就可以切题啦。
#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#define N 40050using namespace std;int n,m,ans=0;int fa[N];struct hatred{int a,b,c;}h[N*10];bool cmp(hatred x,hatred y){return x.c>y.c;}int getfa(int x){return fa[x]==x?fa[x]:fa[x]=getfa(fa[x]);}int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=2*n;i++) fa[i]=i; for (int i=0;i<m;i++) scanf("%d%d%d",&h[i].a,&h[i].b,&h[i].c); sort(h,h+m,cmp); for (int i=0;i<m;i++) { int p=getfa(h[i].a),q=getfa(h[i].b),pp=getfa(h[i].a+n),qq=getfa(h[i].b+n); if (p!=q){fa[p]=fa[qq],fa[pp]=fa[q];} else {ans=h[i].c;break;} } printf("%d\n",ans); return 0;}
阅读全文
0 0
- noip2010关押罪犯 带权并查集
- 【并查集】【Noip2010】关押罪犯
- 【NOIP2010】关押罪犯 虚点并查集
- NOIP2010提高组 关押罪犯 (并查集入门)
- 关押罪犯-详解-noip2010-并查集--搜索--二分图
- [NOIP2010][并查集][二分答案]关押罪犯
- 【noip2010提高组】 关押罪犯 并查集+贪心
- 【NOIP2010】【并查集】T3 关押罪犯 题解
- NOIP2010提高组 关押罪犯(并查集)
- 关押罪犯 【并查集】
- 并查集 关押罪犯
- NOIP2010 关押罪犯 解题报告(并查集,补集判断思想)
- noip2010关押罪犯 两种方法 并查集和二分
- noip2010 关押罪犯 (并查集处理二分图分配)
- NOIP2010 Codevs 1069 关押罪犯 [并查集] [二分图判定]
- 【noip2010】codevs 1069 关押罪犯(二分+BFS染色||并查集)
- 【NOIP2010】关押罪犯 (二分+图染色)||(贪心+并查集)
- NOIP2010关押罪犯 补集
- 分享
- 20171211-number
- mvn 打包 把依赖包也加入到jar包中
- 刷新网址栏导致页面重复提交解决办法
- 51nod 1212 无向图最小生成树(输出生成树)
- noip2010关押罪犯 带权并查集
- pandas 中关于loc跟iloc总结
- opencv 线段相关的函数
- android 6.0下获取当前调用接口的包名
- DoubleBufferPrint不闪屏打印
- 【Android技术难点攻克】RecyclerView实现悬停导航栏
- hive基础命令
- 贝叶斯网络结构学习之连续参数处理方法
- Dynamic Web Module 3.0 requires Java 1.6 or newer报错