NOIP2010关押罪犯题解(洛谷P1525) (并查集)

日常膜拜dalao:财神万岁!!!!!!!!!!!!!!!!!!!!!
日常凌晨三点水题解。。(原谅我中间断更了几天,,马上分班考试了竞赛顾不上)

原题链接:

https://www.luogu.org/problem/P1525

题目

题目描述

S 城现有两座监狱,一共关押着 N名罪犯,编号分别为1−N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为cc 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c c的冲突事件。

每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到S 城Z 市长那里。公务繁忙的Z 市长只会去看列表中的第一个事件的影响力,如果影响很坏,他就会考虑撤换警察局长。
在详细考察了N 名罪犯间的矛盾关系后,警察局长觉得压力巨大。他准备将罪犯们在两座监狱内重新分配,以求产生的冲突事件影响力都较小,从而保住自己的乌纱帽。假设只要处于同一监狱内的某两个罪犯间有仇恨,那么他们一定会在每年的某个时候发生摩擦。
那么,应如何分配罪犯,才能使Z 市长看到的那个冲突事件的影响力最小?这个最小值是多少?

输入格式

每行中两个数之间用一个空格隔开。第一行为两个正整数N,M,分别表示罪犯的数目以及存在仇恨的罪犯对数。接下来的M行每行为三个正整数aj,bj,cj ,表示a号和bj 号罪犯之间存在仇恨,其怨气值为cj 。
数据保证1<aj≤bj≤N,0<cj≤1,000,000,000,且每对罪犯组合只出现一次。

输出格式

共11 行,为ZZ 市长看到的那个冲突事件的影响力。如果本年内监狱中未发生任何冲突事件,请输出0。

输入输出样例
输入:
4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884
输出:
3512

数据范围:
对于30%的数据有N≤ 15。
对于70%的数据有N≤ 2000,M≤ 50000。
对于100%的数据有N≤ 20000,M≤ 100000。

题解

题目概括:

给你m对关系,每对关系分别涉及到x,y两人,矛盾值为w
请你判断分配x和y到两个集合中,能否避免冲突
如能避免请输出0,如果冲突不可避免,请输出最小的矛盾值

这道题,,让矛盾值尽可能小,有题解走的是二分图染色+二分答案(毕竟是矛盾最大的最小)但是我走的是并查集。(因为最近在刷并查集)那么我们可以遵循一个思路,就是”敌人的敌人就是我的朋友“。贪心做法,让怒气最大的尽可能不放在一起。于是把怒气值从大到小排序,然后遍历,对于两个人A,B,把A和B的敌人放在一起,B和A的敌人放在一起,对A,B进行查找,如果他们已经在一棵树中,直接输出怒气值,结束。
因为我们进行了从大到小的排序,大的已经尽可能拆开了,所以当前方案一定是最优的。

AC代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,f[20005],h[20005],num[20005],enemy[20005];
struct road{int x,y,t;bool operator < (const road &a )const{return t>a.t;}
}r[100001];
int getf(int x)//找祖先函数
{if(f[x]==x) return x;else f[x]=getf(f[x]);return f[x];
}
int main()
{cin>>n>>m;cnt=0;for(int  i=1;i<=n;i++){f[i]=i;}for(int i=1;i<=m;i++){scanf("%d%d%d",&r[i].x,&r[i].y ,&r[i].t );}sort(r+1,r+m+1);//从大到小排序for(int i=1;i<=m;i++){int fx=getf(r[i].x);int fy=getf(r[i].y);if(fx==fy) {//冲突无可避免cout<<r[i].t ;return 0;}if(!enemy[r[i].x])  enemy[r[i].x ]=r[i].y;else                 f[getf(enemy[r[i].x])]=getf(r[i].y);if(!enemy[r[i].y])     enemy[r[i].y]=r[i].x;else                  f[getf(enemy[r[i].y])]=getf(r[i].x);}cout<<"0";return 0;}

顺边说一下,那个结构体里面的排序运算符重载看不懂的,欢迎访问dalao的博客
(手动滑稽)
https://blog.csdn.net/Martisum/article/details/97972347
本文或许以后会更新二分图染色做法,,也有可能不会
(毕竟我很懒qwq)
如果本文有不到出欢迎评论,
感谢各位神犇对本蒟蒻的支持!qwq

NOIP2010关押罪犯题解(洛谷P1525) (并查集)相关推荐

  1. 并查集——关押罪犯(洛谷 P1525)

    题目选自洛谷P1525 此题是一道很经典,而且很好的题目.思路也十分的新颖,比较的难以捉摸. 题面大意:(人性翻译) 给你m对矛盾关系,每对关系分别涉及到x,y两人,矛盾值为w 请你判断分配x和y到两 ...

  2. 题解 洛谷P1365 WJMZBMR打osu! / Easy

    题解 洛谷P1365 WJMZBMR打osu! / Easy Date 2019.7.28 题目大意 给出一个长度为n的由o,x,?组成的字符串,对于每连续的a个o,就有a2分.同时,对于任意的?,有 ...

  3. 洛谷P1525 关押罪犯

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

  4. [NOIP2010]关押罪犯(题解)

    目录 篛箕的自诉 题目分析+代码: 第一种做法(图论+搜索): 第二种做法(并查集,拓展域): 篛箕的自诉 以前的我对你爱搭不理,现在的我对你笔不能提: 传送门 以前学习搜索的时候看到这个题就感觉一定 ...

  5. python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等

    NOI题库 python题解-2022.01.07整理(1.1-1.3) NOI题库 python题解-2022.01.07整理(1.1-1.3)_dllglvzhenfeng的博客-CSDN博客 N ...

  6. 题解 洛谷P4473 【[国家集训队]飞飞侠】

    这道题今天我们考试考到了,第三题,最后只剩半小时了,随便打了个暴搜,最后竟然还没调完QAQ,我竟然连暴力都不会打了 咳咳,不扯了,下面开始说这道题的做法 由于N和M都不大于150最容易想到的是Floy ...

  7. [NOIP2010]关押罪犯

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

  8. 题解 洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏

    洛谷P4042[AHOI2014/JSOI2014]骑士游戏\color{#00F}{洛谷\ P4042\ [AHOI2014/JSOI2014]骑士游戏}洛谷 P4042 [AHOI2014/JSO ...

  9. 题解 洛谷 P3069 [USACO13JAN]牛的阵容Cow Lineup

    洛谷P3069[USACO13JAN]牛的阵容CowLineup\color{#00F}{洛谷\ P3069\ [USACO13JAN]牛的阵容Cow Lineup}洛谷 P3069 [USACO13 ...

最新文章

  1. JavaScript之function类型
  2. 利用ajax作一实时日志系统查询模块,和感兴趣的同行交流一下!
  3. feedback for last final year project meeting
  4. cmd后台运行exe_windows 十大实用“运行”命令
  5. matlab里查看图像属性,MATLAB绘图属性操作
  6. 这些棘手的Java面试题,答案你都知道吗?
  7. bzoj3771: Triple
  8. 【X264系列】之命令参数解析
  9. CentOS7 服务器连接超时自动断开问题解决
  10. Python版点菜订单
  11. 默认空间和webapps下项目部署
  12. 选择深度学习的GPU卡
  13. 安装Microsoft Office - Win系统
  14. 网络安全形势严峻:国内黑灰产业产值达千亿
  15. Linux下使用 ./ 来运行可执行文件
  16. 日有所思(6)——直流电机注意点
  17. RFID手持终端PDA如何进行二次开发
  18. Linux 阻塞和非阻塞 IO 实验
  19. JAVAEE容器如何管理EntityManager和PersistenceContext
  20. What is hosts?

热门文章

  1. 一个屌丝程序员的青春(二三三)
  2. 怎么选择靠谱的独立站代运营公司
  3. 软件功能测试重点工作有哪些?
  4. php 数组设置为空,php - 如果数组为空,跳过foreach的最干净的方法
  5. 零基础学习PHP编程——学习PHP编程从认识计算机开始
  6. 微信小程序:清除缓存,退出登录
  7. 数据并发问题-精通spring 企业应用开发实战读书笔记
  8. excel元素批量添加前缀和后缀
  9. 2022年起重机械指挥特种作业证考试题库及模拟考试
  10. 微星gp76 11u+3070 2k 165hz