博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2010 关押罪犯
阅读量:5846 次
发布时间:2019-06-18

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

关押罪犯

题目描述

S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极

不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨

气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之

间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并

造成影响力为c 的冲突事件。

每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,

然后上报到S 城Z 市长那里。公务繁忙的Z 市长只会去看列表中的第一个事件的影响力,

如果影响很坏,他就会考虑撤换警察局长。

在详细考察了N 名罪犯间的矛盾关系后,警察局长觉得压力巨大。他准备将罪犯们在

两座监狱内重新分配,以求产生的冲突事件影响力都较小,从而保住自己的乌纱帽。假设只

要处于同一监狱内的某两个罪犯间有仇恨,那么他们一定会在每年的某个时候发生摩擦。那

么,应如何分配罪犯,才能使Z 市长看到的那个冲突事件的影响力最小?这个最小值是少?

 

输入描述

第一行为两个正整数N 和M,分别表示罪犯的数目以及存在仇恨的罪犯对数。

接下来的M 行每行为三个正整数aj,bj,cj,表示aj 号和bj 号罪犯之间存在仇恨,其怨气值为cj。数据保证且每对罪犯组合只出现一次。

 

输出描述

共1 行,为Z 市长看到的那个冲突事件的影响力。如果本年内监狱

中未发生任何冲突事件,请输出0。

 

样例输入

4 6

1 4 2534

2 3 3512

1 2 28351

1 3 6618

2 4 1805

3 4 12884

 

样例输出

3512

 

数据范围及提示

罪犯之间的怨气值如下面左图所示,右图所示为罪犯的分配方法,市长看到的冲突事件

影响力是3512(由2 号和3 号罪犯引发)。其他任何分法都不会比这个分法更优。

【数据范围】

对于30%的数据有N≤ 15。

对于70%的数据有N≤ 2000,M≤ 50000。

对于100%的数据有N≤ 20000,M≤ 100000。

 

//对于一个罪犯a,设其敌人为a+n;//对于另一个罪犯b,设其敌人为b+n;//若a和b是敌人,那将a与b+n放在一组,b与a+n放在一组;//当a+n与b+n放在一组时,a与b也在一组;//若是依照排序后的顺序操作,则a与b的怒气值就是所求值; #include
#include
using namespace std;int n,m,ans=0,f[40002],x,y,c=0;struct node{ int a,b,c;} sz[100002];bool rule(node a,node b){ return a.c>b.c;}int find(int x){ //并查集; if(f[x]==x) return x; else{ f[x]=find(f[x]); return f[x]; }}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d%d",&sz[i].a,&sz[i].b,&sz[i].c); sort(sz+1,sz+m+1,rule); //按怒气值排序; for(int i=1;i<=2*n;i++) f[i]=i; for(int i=1;i<=m;i++){ x=find(sz[i].a); y=find(sz[i].b); if(x==y){ ans=sz[i].c; break; } else{ f[x]=find(f[sz[i].b+n]);//将a与b+n放在一组; f[y]=find(f[sz[i].a+n]);//将b与a+n放在一组 } } for(int i=1;i<=n;i++) f[i]=find(f[i]); printf("%d",ans); return 0;}
View Code

 

转载于:https://www.cnblogs.com/qingang/p/5452511.html

你可能感兴趣的文章
基于redis分布式锁实现“秒杀”
查看>>
50个Redis常见面试题讲解
查看>>
关于SVN提交时报out-of-date错误的解决方法
查看>>
在网上看到的机房布线图片
查看>>
用treeset对字符串进行长度排序
查看>>
sql(SqlServer)编程基本语法
查看>>
linux 文件特殊权限
查看>>
ln -s 软链接应用-磁盘空间不够用的解决方案
查看>>
Windows7操作系统安装教程(图文)
查看>>
我的友情链接
查看>>
ASA 同端口级别如何互访
查看>>
net发送apns解决方案(iphone push)
查看>>
tomcat性能调优
查看>>
springmvc 不指定访问路径后缀都会匹配的
查看>>
Ubantu权限设置
查看>>
基于web的文件管理/目录结构展示(ufinder、elfinder)……的心路历程
查看>>
Linux下使用parted分区工具为大于2T硬盘分区
查看>>
Ubuntu下口袋妖怪终端主题安装
查看>>
重装GRUB
查看>>
cookie 和session 的区别详解
查看>>