洛谷题目链接


输入

4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884

输出

3512

1.并查集

有意思的一道并查集的题,需要一些思维。
用并查集来维护,当a和b并到一起的时候说明他们两个在同一个监狱之中。
本题要求最大的仇恨值最小,所以用结构体存数据,先排序,仇恨值最大的排在前面,遍历这个结构体数组,遵循把敌人的敌人和我放在一个监狱的原则来add即可。其中要注意如果可以都不在一个监狱不发生冲突就输出0,所以循环要从1到m+1,这样到m+1的时候,数据:0,0,0,直接会check输出 0

注意:并查集必须先初始化!

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+7;
const ll mod=2147483647;
ll n,m,w,b,c;
ll f[N],vis[N];
struct node
{ll x,y,z;bool operator<(const node &s)const{return z>s.z;}
}a[N];
inline void init()//并查集必须要初始化!
{for(int i=1;i<=n;++i)f[i]=i;
}
inline ll finds(ll x)
{return f[x]==x?x:f[x]=finds(f[x]);
}
inline void add(ll x,ll y)
{x=finds(x);y=finds(y);f[x]=y;
}
inline bool check(ll x,ll y)
{x=finds(x);y=finds(y);return x==y;
}
int main()
{scanf("%lld %lld",&n,&m);init();for(int i=1;i<=m;++i){scanf("%lld %lld %lld",&a[i].x,&a[i].y,&a[i].z);}sort(a+1,a+1+m);for(int i=1;i<=m+1;++i){if(check(a[i].x,a[i].y)){printf("%lld\n",a[i].z);break;}if(!vis[a[i].x])vis[a[i].x]=a[i].y;else add(vis[a[i].x],a[i].y);if(!vis[a[i].y])vis[a[i].y]=a[i].x;else add(vis[a[i].y],a[i].x);}return 0;
}

2.二分图

这道题总共有两个监狱,把一群人分到两个监狱里很明显就是一个二分图
那么就可以直接二分答案并用二分图判断即可
别人的代码和详解:
二分答案+二分图判断
有任何疑问欢迎评论哦虽然我真的很菜

P1525 关押罪犯(扩展域并查集/二分图)相关推荐

  1. 关押罪犯 扩展域并查集

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

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

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

  3. 【NOIP2010】【codevs1069】关押罪犯(并查集补集,拆点)

    problem 有n个罪犯和m对关系(表示两个罪犯的怨气值) 有2座监狱分别关押他们,当2个罪犯在同一个监狱时怒气值就会爆发. 如何分配让所有产生的怨气值中最大的怨气值最小,输出该怨气值. solut ...

  4. 关押罪犯(并查集加点问题最详细讲解)

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

  5. P2024 [NOI2001]食物链[扩展域并查集]

    题目来源:洛谷 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C ...

  6. 并查集 ---- 扩展域并查集判二分图 + 循环模拟字典树 The 2020 ICPC Asia Macau Regional Contest C. Club Assignment (详解)

    题目链接 题目大意: 有n个数,现在要把他们拆分成两个集合,假设S为集合,有如下定义: f(S)={min(x⊕y)∣x,y∈S,andx!=y}f(S)=\{min(x\oplus y)|x,y\i ...

  7. 洛谷P1525 关押罪犯

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

  8. 食物链(扩展域并查集)

    题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形. A吃B, B吃C,C吃A. 现有N个动物,以1-N编号. 每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种 ...

  9. HDU 3081 Marriage Match II (并查集+二分+最大流 | 并查集+二分图匹配)

    题意:n 个男生.n个女生玩游戏,每个女生都可以和她不讨厌的男生结婚,此外她的朋友如果也不讨厌这个男生,也可以和他结婚:对于女生,如果A和B是朋友,B和C是朋友,那么A和C也是朋友.每次游戏女生会找一 ...

最新文章

  1. 算法 - 最好、最坏、平均复杂度
  2. poj1734(最小环+路径)
  3. Chapter18-Export and Import Utilities
  4. 移动端屏幕自适应布局
  5. 【小白学习keras教程】十、三种Model Selection方法:k-fold cross-validation,GridSearchCV和RandomizedSearchCV
  6. News Distribution
  7. SAP Spartacus Org unit detail实例的单例特性
  8. python爬虫拉取豆瓣Top250数据
  9. Apollo进阶课程 ⑧ | 高精地图的格式规范
  10. 学习node.js的一些笔记
  11. 重庆兴渝计算机培训中心,重庆兴渝职业中等专业学校2021招生录取分数线
  12. android 获取刘海高度,不同刘海屏幕获取安全高度
  13. 《Thinking in UML》学习1——参与者与用例
  14. Emacs快捷键 转自:http://www.engr.uvic.ca/~dastone/emacs-keys.html
  15. rails相当于java中的什么_Rails中的ERB中的%,%=,%#和-%有什么区别?
  16. java-POI的Excel默认字体和样式
  17. 贪吃机器人DIY(一)
  18. C#根据当前时间获取周,月,季度,年度等时间段的起止时间
  19. 抖音去水印小程序太坑了,每天只能下载一个还要钱。还是自己用Python写一个得劲
  20. linux输入rz命令后出现receive.**B0100000023be50,没有文件弹出框

热门文章

  1. 机器学习库Scikit-learn库使用总结.pptx
  2. OpenCV4 部署DeepLabv3+模型
  3. java中@Qualifier(string)是什么用法
  4. log_bin.index not found 启动报错解决
  5. UISlider 滑竿控件
  6. JavaScript:事件冒泡和事件委托
  7. mysql 使用真正的utf-8编码
  8. mysql association_mybatis association 一对一
  9. win7 64安装oracle10g 客户端,关于win7 64位 只 安装 oracle 10g的client
  10. db9小波包分解matlab,小波包分解、重构 matlab代码