正题

评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1525


题目大意

有n个罪犯,罪犯有些关系,就是(i,j,c)(i,j,c)(i,j,c)表示罪犯i和罪犯j在同一个监狱会造成c的破坏,有两座监狱,要求分配的使得最大的破坏最小。


解题思路

先按照c排序,然后就从大到小处理直到无法处理。
我们可以用并查集表示在一个监狱中,然后用敌人的敌人是朋友来合并。记录每个罪犯的敌人的根,然后每次合并就将他的敌人和他的敌人合并在一起,直到发现一个人即是某人的敌人有是某人敌人的敌人就输出。


code

#include<cstdio>
#include<algorithm>
#define N 20010
using namespace std;
struct node{int x,y,c;
}a[N*5];
int n,m,father[N],empty[N];
bool cmp(node x,node y)
{return x.c>y.c;}
int find(int x)//寻找
{if(father[x]==x) return x;return father[x]=find(father[x]);
}
void unionn(int x,int y)//合并
{int fa=find(x),fb=find(y);father[fa]=fb;
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;i++)scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].c);for(int i=1;i<=n;i++)father[i]=i;sort(a+1,a+1+m,cmp);for(int i=1;i<=m;i++){if(find(a[i].x)==find(a[i].y))//出现问题{printf("%d",a[i].c);return 0;}else {if(!empty[a[i].x])empty[a[i].x]=a[i].y;else unionn(empty[a[i].x],a[i].y);if(!empty[a[i].y])empty[a[i].y]=a[i].x;else unionn(empty[a[i].y],a[i].x);//连接——敌人的敌人}}printf("0");
}

P1525-关押罪犯【并查集】相关推荐

  1. 关押罪犯-并查集、贪心

    题目来源:Acwing 257.关押罪犯&洛谷 P1525 [NOIP2010 提高组] 关押罪犯 思路来源:这里 题目描述 S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N. 他 ...

  2. [NC16591]关押罪犯 并查集

    题解:很明显的并查集,但因为它们带有权值,所以我们先要把他排序,我们要尽可能让危害大的罪犯在两个监狱里(这里有一点贪心的味道). 1.首先我们把它门按照之间的影响值从大到小排序. 2.假设a与b是敌人 ...

  3. 关押罪犯 并查集~~~

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

  4. 洛谷P1525 关押罪犯

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

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

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

  6. P1525 关押罪犯(扩展域并查集/二分图)

    洛谷题目链接 输入 4 6 1 4 2534 2 3 3512 1 2 28351 1 3 6618 2 4 1805 3 4 12884 输出 3512 1.并查集 有意思的一道并查集的题,需要一些 ...

  7. P1525 关押罪犯

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

  8. 0x41.数据结构进阶 - 并查集

    目录 一.路径压缩与按秩合并 1.AcWing 237. 程序自动分析(NOIP2015) 二.边带权并查集 1.AcWing 238. 银河英雄传说(边带权并查集模板) 2.AcWing 239. ...

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

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

  10. 【原创】并查集之扩展域与边带权

    [前言] 并查集是一种可以动态维护若干个不重叠的集合,并支持合并于查询的数据结构. 并查集的基本概念很简单,但是这样一种思想的用途十分广泛. 个人理解:这是一种很巧妙的,可以很好的处理对象之间关系的数 ...

最新文章

  1. IntelliJ IDEA 安装问题解决
  2. 编写高质量的代码,改善c#程序的157个建议_之1~10
  3. 拼的html页面乱,页面分页html拼接
  4. js 将video的第一帧 转为图片
  5. ASP.NET2.0中控件的简单异步回调
  6. android开源2016_开源多样性努力在2016年获得动力
  7. java虚拟机标志_《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合...
  8. springAOP,面向切面编程详解,通俗易懂
  9. 根据ip地址制作html,根据ip掩码计算可用ip
  10. 盘点|国产无线通信模块厂,赶紧收藏!
  11. 萤石云设备接入操作说明
  12. BUAA(2021春) 北京地铁乘坐线路查询——Dijkstra和Floyd双解法
  13. top 100 percent
  14. 我的Security+601备考经验分享
  15. 如何安全的清除linux访问记录
  16. (六)温故知新系列之RXJS——RXJS操作符基础(转化类)
  17. 老树开新花之shellcode_launcher免杀Windows Defender
  18. Virgo Tomcat Server 指南-Hello World
  19. 可以查询天气的日历——QT制作第一个自己的小软件
  20. 寿命计算器测试软件,你还能活多久?这个“寿命计算器”可以给出答案

热门文章

  1. 点歌软件测试自学,实际歌唱对比测试
  2. 华为Mate30与大疆手机云台3_更便捷更从容,大疆DJI OM 4手机云台使用体验
  3. code删除前两个_听说用python来批量删除说说也挺快乐的呢~
  4. win10右键一直转圈_Win10电脑开机一直转圈无法进入系统的解决方法
  5. 小说中场景的功能_如何让你的小说中的场景转换自如?
  6. cv2.imread读取图像结果none_python cv2.imread 读取中文路径的图片返回为None的问题
  7. Excel学习使用教程
  8. 一文弄懂Numpy中ndarray的维度(dimension)/轴数(axis/axes)问题
  9. C++实现具有[数组]相似特征的类DoubleSubscriptArray
  10. [蓝桥杯][历届试题]网络寻路-dfs,图的遍历