传送门

Description

Input

Output

Sample Input


Sample Output


Hint

Solution

  非常显然的并查集题目,在本题中,对于每个罪犯i,维护两个信息:必须要和他关在一起的罪犯的集合,以及和他有仇的罪犯的集合,由于监狱只有两个,所以和他有仇的罪犯一定被关在同一个集合里面。sort一遍贪心从上到下扫描。对于不得不管起来的两个有仇的人即为答案。

Code

#include<cstdio>
#include<algorithm>
namespace read{
void imop(int&x){
char ch=getchar();
while(ch<''||ch>'') ch=getchar();
while(ch>=''&&ch<='') x=x*+ch-'', ch=getchar();
return;
}
void op(int&x){
char ch=getchar();
int f=;
while(ch<''||ch>''){
if(ch=='-') f=-;
ch=getchar();
}
while(ch>=''&&ch<='') x=x*+ch-'', ch=getchar();
x*=f;
return;
}
}
namespace fusu{
const int maxn = , maxm = ;
struct Crim{
int a,b,value;
};
Crim criminal[maxm];
int n,m;
inline bool cmp(Crim a,Crim b){return a.value<b.value;}
int frog[maxn],enemy[maxn];
inline int find(int x){
if(frog[x]^x) frog[x]=find(frog[x]);
return frog[x];
}
void gather(int a,int b){
int fa=find(frog[a]),fb=find(frog[b]);
frog[fa]=fb;
return;
}
void beginning(){
for(int i=;i<=n;++i)
frog[i]=i;
return;
}
int doit(){
read::imop(n);read::imop(m);
for(int i=;i<=m;++i){
read::imop(criminal[i].a);
read::imop(criminal[i].b);
read::imop(criminal[i].value);
}
std::sort(criminal+,criminal++m,cmp);
beginning();
do{
int fa=find(frog[criminal[m].a]),fb=find(frog[criminal[m].b]);
if(!(fa^fb)){
printf("%d\n",criminal[m].value);
return ;
}
if(!enemy[criminal[m].a]) enemy[criminal[m].a]=criminal[m].b;
else gather(enemy[criminal[m].a],criminal[m].b);
if(!enemy[criminal[m].b]) enemy[criminal[m].b]=criminal[m].a;
else gather(enemy[criminal[m].b],criminal[m].a);
--m;
}while(m);
printf("0\n");
return ;
}
}
int main(){
return fusu::doit();
}

Summary

对于并查集中的补集法,对于每个个体记录多个信息,在合并时合并多个信息即可。

最新文章

  1. haslayout
  2. 学习C++.Primer.Plus 4 复合类型
  3. 从Windows XP系统迁移到Windows 7,Windows 8开始
  4. C#微信开发回复信息
  5. SqlCommand对象
  6. vs 中 vim vax 快捷键
  7. Android菜鸟的成长笔记(17)—— 再看Android中的Unbounded Service
  8. Hive 自定义函数
  9. ELK-Elasticsearch安装
  10. Machine Learning 学习笔记1 - 基本概念以及各分类
  11. unity3d-知识汇总
  12. Tornado安装
  13. python 游戏(猜单词Hangman)
  14. 服务 Service 清单文件中可设置的属性
  15. 【OCP-12c】2019年CUUG OCP 071考试题库(73题)
  16. html5+js+.Net的即时多人聊天
  17. 武汉邀请赛 Key Logger 双向链表
  18. HDU 5617 Jam&#39;s maze dp+滚动数组
  19. Mybatis &lt;if&gt;标签使用注意事项
  20. Oracle_11g桌面版 中解决被锁定的scott 教学数据库的方法

热门文章

  1. python3读取csv文件
  2. 【转】Bootstrap FileInput中文API整理
  3. 【if控制器】-(某种情况成立就执行的场景)
  4. Machine Learning笔记整理 ------ (五)决策树、随机森林
  5. Python为什么会打印两个\
  6. 《剑指Offer》题五十一~题六十
  7. Java学习个人备忘录之多态
  8. Java微笔记(3)
  9. mysql入门 — (1)
  10. Objective-C 反射机制