博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2010提高组-C]关押罪犯(扩展域并查集
阅读量:5290 次
发布时间:2019-06-14

本文共 916 字,大约阅读时间需要 3 分钟。

题:https://www.cometoj.com/problem/0073

 

#include
using namespace std;const int M=1e5+4;struct node{ int u,v,w;}e[M];int f[M];bool cmp(node p,node q){ return p.w>q.w;}int find(int x){ return f[x]==x?x:f[x]=find(f[x]);}int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); } sort(e+1,e+1+m,cmp); for(int i=1;i<=2*n;i++) f[i]=i; for(int i=1;i<=m;i++){ int u=e[i].u,v=e[i].v; int uu=e[i].u+n,vv=e[i].v+n; int a=find(u),b=find(v); int aa=find(uu),bb=find(vv); if(a==b){ return printf("%d\n",e[i].w),0; } else { if(a!=bb) f[a]=bb; if(aa!=b) f[aa]=b; } } printf("0\n"); return 0;}
View Code

 

把每个人拆成两个点分别表示与这个人一个监狱的集合和与这个人不同监狱的集合即可。

转载于:https://www.cnblogs.com/starve/p/11503477.html

你可能感兴趣的文章
C# 修饰符
查看>>
JavaScript启示录
查看>>
我需要什么样的浏览器?
查看>>
取textaera里的值
查看>>
java设计模式1--工厂方法模式(Factory Method)
查看>>
博客第一弹—聊聊HTML的那些事
查看>>
上海2017QCon个人分享总结
查看>>
HIVE快速入门 分类: B4_HIVE 2015-...
查看>>
Mysql安装方法及安装问题解决
查看>>
Java动态代理的两种实现方式:
查看>>
PHP trait
查看>>
Redis的常用命令(三)
查看>>
HDOJ 4749 Parade Show
查看>>
python 多线程并发threading & 任务队列Queue
查看>>
【黑马程序员】资深程序员的见解
查看>>
1_fbauto
查看>>
IO体系、集合体系、多线程、jdbc
查看>>
关于时间:UTC/GMT/xST/ xDT
查看>>
[51Nod1089] 最长回文子串 V2(Manacher算法)
查看>>
Asp.Net生命周期系列六
查看>>