luogu1525 [NOIp2011]关押罪犯 (并查集)
先从大到小排序,看到哪个的时候安排不开了
给每个人拆成两个,如果x和y有矛盾,就给x和y‘、y和x’连边;如果a和b(或a'和b')在同一个集合里,说明他们一定要在同一个监狱里。
#include<bits/stdc++.h>
#define pa pair<int,int>
#define CLR(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
const int maxn=,maxm=; inline ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} struct Node{
int a,b,c;
}op[maxm];
int N,M,fa[maxn*]; inline bool cmp(Node a,Node b){return a.c>b.c;} inline int getf(int x){return fa[x]==x?x:fa[x]=getf(fa[x]);}
inline void add(int a,int b){
fa[getf(a)]=getf(b);
} int main(){
//freopen("","r",stdin);
int i,j,k;
N=rd(),M=rd();
for(i=;i<=M;i++){
op[i].a=rd(),op[i].b=rd(),op[i].c=rd();
}sort(op+,op+M+,cmp);
for(i=;i<=N*;i++) fa[i]=i;
for(i=;i<=M;i++){
if(getf(op[i].a)!=getf(op[i].b)){
add(op[i].a,op[i].b+N);
add(op[i].a+N,op[i].b);
}else{
printf("%d\n",op[i].c);
return ;
}
}printf("0\n");
return ;
}
luogu1525 [NOIp2011]关押罪犯 (并查集)的更多相关文章
- NOIP2010关押罪犯[并查集|二分答案+二分图染色 | 种类并查集]
		题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示 ... 
- NOIP 2010 关押罪犯 并查集  二分+二分图染色
		题目描述: S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值" ... 
- Luogu P1525 [NOIp2010提高组]关押罪犯 | 并查集
		题目链接 这一道题,我用了并查集来做.在此题中,并查集的作用就是:将同一个监狱里的罪犯合并到一起. 思路:将每对罪犯之间的怨气值从大到小排序,再依次把他们分到不同的两个监狱里,当发现这一对罪犯已经在同 ... 
- [noip2010]关押罪犯 并查集
		第一次看的时候想到了并查集,但是不知道怎么实现: 标解,f[i]表示i所属的集合,用f[i+n]表示i所属集合的补集,实现的很巧妙,可以当成一个使用并查集的巧妙应用: #include<iost ... 
- NOIP2010提高组] CODEVS 1069 关押罪犯(并查集)
		这道这么简单的题目还写了这么久.. 将每个会发生冲突的两人的怒气进行排序,然后从怒气大到小,将两个人放到不同监狱中.假如两人都已经被放置且在同一监狱,这就是答案. ------------------ ... 
- 洛谷P1525关押罪犯——并查集
		题目:https://www.luogu.org/problemnew/show/P1525 并查集+贪心,从大到小排序,将二人分在不同房间,找到第一个不满足的即为答案. 代码如下: #include ... 
- LUOGU 1525 关押罪犯 - 并查集拆点(对立点)  /   二分+二分图染色
		传送门 分析: 并查集: 第一步先将所有矛盾从大至小排序,显然先将矛盾值大的分成两部分会更优. 普通的并查集都只能快速合并两个元素至同一集合,却不能将两个元素分至不同集合. 对于将很多数分成两个集合, ... 
- P1525 关押罪犯  并查集
		题目描述 SS城现有两座监狱,一共关押着NN名罪犯,编号分别为1-N1−N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值) ... 
- 关押罪犯 - 并查集&优先队列
		题目地址:http://www.51cpc.com/web/problem.php?id=4261 Summarize: 此题最巧妙的是“敌人的敌人就是朋友!”,故需先将敌对关系放入优先队列,按怨恨值 ... 
随机推荐
- Spring3 访问静态资源
			<mvc:resources location="/jquery/" mapping="/jquery/**"/> <mvc:resource ... 
- [2016北京集训测试赛17]crash的游戏-[组合数+斯特林数+拉格朗日插值]
			Description Solution 核心思想是把组合数当成一个奇怪的多项式,然后拉格朗日插值..:哦对了,还要用到第二类斯特林数(就是把若干个球放到若干个盒子)的一个公式: $x^{n}=\su ... 
- 比较不错的Nosql文章
			1. NoSQL简单介绍 2. NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装 3. NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介 4. NoSQ ... 
- Java中的Calendar日历用法详解
			第一部分 Calendar介绍 public abstract class Calendar implements Serializable, Cloneable, Comparable<Cal ... 
- install opencv 2.4.10 with issue :"nvcc fatal   : Unsupported gpu architecture 'compute_11'"
			issue: nvcc fatal : Unsupported gpu architecture 'compute_11'CMake Error at cuda_compile_generated ... 
- <转>性能测试浅谈
			本文主要针对WEB系统的性能测试.不涉及具体的执行操作,只是本人对性能测试的一点理解和认识. 性能测试的目的,简单说其实就是为了获取待测系统的响应时间.吞吐量.稳定性.容量等信息.而发现一些具体的性能 ... 
- Selenium和TestNG
			本文档由Felipe Knorr Kuhn撰写,并根据其博客上发布的一系列文章进行改编. 建模您的测试用例 在编写测试用例之前,您需要知道如何验证以及将要验证的内容.让我们使用WordPress “创 ... 
- WebGL模型拾取——射线法二
			这篇文章是对射线法raycaster的补充,上一篇文章主要讲的是raycaster射线法拾取模型的原理,而这篇文章着重讲使用射线法要注意的地方.首先我们来看下图. 我来解释一下上图中的originTr ... 
- hive orc压缩数据异常java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcSerde$OrcSerdeRow
			hive表在创建时候指定存储格式 STORED AS ORC tblproperties ('orc.compress'='SNAPPY'); 当insert数据到表时抛出异常 Caused by: ... 
- error: Build input file cannot be found: '*******/node_modules/react-native/Libraries/WebSocket/libfishhook.a' 问题解决记录
			解决了刚才的'config.h' file not found问题,本以为就可以顺畅的跑起来,谁知道又被恶心到了,Build input file cannot be found!!! 问题: err ... 
