wikioi 1069 关押罪犯 2010年NOIP全国联赛提高组(并查集)
来源:互联网 发布:淘宝价聚划算 编辑:程序博客网 时间:2024/04/29 16:35
1069 关押罪犯 2010年NOIP全国联赛提高组
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题解
查看运行结果
题目描述 Description
S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极
不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨
气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之
间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并
造成影响力为c 的冲突事件。
每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,
然后上报到S 城Z 市长那里。公务繁忙的Z 市长只会去看列表中的第一个事件的影响力,
如果影响很坏,他就会考虑撤换警察局长。
在详细考察了N 名罪犯间的矛盾关系后,警察局长觉得压力巨大。他准备将罪犯们在
两座监狱内重新分配,以求产生的冲突事件影响力都较小,从而保住自己的乌纱帽。假设只
要处于同一监狱内的某两个罪犯间有仇恨,那么他们一定会在每年的某个时候发生摩擦。那
么,应如何分配罪犯,才能使Z 市长看到的那个冲突事件的影响力最小?这个最小值是少?
输入描述 Input Description
第一行为两个正整数N 和M,分别表示罪犯的数目以及存在仇恨的罪犯对数。
接下来的M 行每行为三个正整数aj,bj,cj,表示aj 号和bj 号罪犯之间存在仇恨,其怨气值为cj。数据保证,且每对罪犯组合只出现一次。
输出描述 Output Description
共1 行,为Z 市长看到的那个冲突事件的影响力。如果本年内监狱
中未发生任何冲突事件,请输出0。
样例输入 Sample Input
4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884
样例输出 Sample Output
3512
数据范围及提示 Data Size & Hint
罪犯之间的怨气值如下面左图所示,右图所示为罪犯的分配方法,市长看到的冲突事件
影响力是3512(由2 号和3 号罪犯引发)。其他任何分法都不会比这个分法更优。
【数据范围】
对于30%的数据有N≤ 15。
对于70%的数据有N≤ 2000,M≤ 50000。
对于100%的数据有N≤ 20000,M≤ 100000。
program df;
var i,j,n,m,x,y,z,k,t:longint;
a,b,c,f:array[0..100000] of longint;
procedure sq(l,r:longint);
var i,j,mm,dd:longint;
begin
i:=l; j:=r;
mm:=c[(l+r) div 2];
repeat
while c[i]>mm do inc(i);
while c[j]小于mm do dec(j);
if i<=j then
begin
dd:=c[i]; c[i]:=c[j]; c[j]:=dd;
dd:=a[i]; a[i]:=a[j]; a[j]:=dd;
dd:=b[i]; b[i]:=b[j]; b[j]:=dd;
inc(i); dec(j);
end;
until i>j;
if j>l then sq(l,j);
if r>i then sq(i,r);
end;
function find(x:longint):longint;
begin
if f[x]<>x then f[x]:=find(f[x]);
find:=f[x];
end;
begin
readln(n,m);
for i:=1 to n do
begin
f[i]:=i;
f[i+n]:=i+n;
end;
for i:=1 to m do
readln(a[i],b[i],c[i]);
sq(1,m); //从大到小快排
for i:=1 to m do
begin
x:=find(a[i]);
y:=find(b[i]);
if x<>y then //能并就并
begin
f[x]:=find(b[i]+n); //将a[i]的并在b[i] 所在的监狱
f[y]:=find(a[i]+n); //同理可得。。。。
end
else
begin
writeln(c[i]); //不能并则说明只能分在一个监狱,则输出
halt;
end;
end;
writeln(0); //全部可以岔开,则输出0
end.
- wikioi 1069 关押罪犯 2010年NOIP全国联赛提高组(并查集)
- 2010年NOIP全国联赛提高组 关押罪犯 (贪心处理 + 并查集)
- Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
- wikioi-天梯-提高一等-并查集-1069:关押罪犯
- 【NOIP 2010 提高组 T3】关押罪犯(并查集)
- noip关押罪犯 并查集做法
- [NOIP 2010]关押罪犯 贪心+并查集
- NOIP提高组2010 关押罪犯
- NOIP 提高组 2010 关押罪犯
- luogu1525【2010提高】关押罪犯(贪心+并查集)
- NOIP2010提高组 关押罪犯 (并查集入门)
- 【noip2010提高组】 关押罪犯 并查集+贪心
- NOIP2010提高组 关押罪犯(并查集)
- wikioi 1068 乌龟棋 (2010年NOIP全国联赛提高组)
- wikioi 1017 乘积最大 (2000年NOIP全国联赛普及组NOIP全国联赛提高组)
- wikioi 1017 乘积最大 (2000年NOIP全国联赛普及组NOIP全国联赛提高组)
- 并查集1069 关押罪犯
- codevs 1069关押罪犯 并查集
- MIPS之指令集介绍
- 2016.11.11
- 数据库表设计
- android 与Javascrip互相调用
- 2016.11.11 链接阶段的工作+gcc01,02,03级优化分别优化的是什么+-static的作用
- wikioi 1069 关押罪犯 2010年NOIP全国联赛提高组(并查集)
- 通讯录
- JS-数组去重
- Android学习 (五)之常用的几个控件
- 安装Sql Server 2012遇到的问题
- k2pdfopt 多平台处理pdf的利器
- Android中广播注册与接收流程
- 两次使用Stream注意事项
- qt工程release迁移到其他电脑后图片无法显示的问题