$Luogu$

$Sol$

贪心.尽量把怨气值大的罪犯放到两个监狱,所以首先要按照怨气值从大到小排序.当扫描到两个罪犯已经被指定到同一个监狱时,就结束循环,这个怨气值就是答案.当然把怨气值大的两个罪犯放到两个监狱是不能乱放的,这样的反例非常好举.比如两对罪犯$a1,a2,b1,b2$,随便放之后是$(a1,b1),(a2,b2)$,但是$a1$和$b1$其实会发生冲突而且其怨气值较大只是现在还没有扫到,相比之下$(a1,b2),(a2,b1)$的搭配可能更优.于是我想要不搜索算了.这样想叭,先把$a1,a2,b1,b2$这两组放着不管,当遇到$a1,b1$这一组的时候就把$(a1,b2)$放一组,$(a2,b1)$放一组.具体来说,记录每一个罪犯的第一个扫到的发生冲突的罪犯,如果扫到两个罪犯其中一个罪犯的对手有记录的对手,那么就把他们两个分到一个监狱.

$Code$

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;++i)
#define yes(i,a,b) for(Rg int i=a;i>=b;--i)
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define db double
#define inf 2147483647
using namespace std;
il int read()
{
Rg int x=0,y=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
return x*y;
}
const int N=20010;
int n,m,b[N],f[N];
struct node{int x,y,w;}a[N*5];
il bool cmp(node x,node y){return x.w>y.w;}
il int find(int x){if(x==f[x])return x;return f[x]=find(f[x]);}
int main()
{
n=read(),m=read();
go(i,1,m)a[i]=(node){read(),read(),read()};
go(i,1,n)f[i]=i;
sort(a+1,a+m+1,cmp);
go(i,1,m)
{
Rg int x=a[i].x,y=a[i].y,fx=find(x),fy=find(y);
if(fx==fy){printf("%d\n",a[i].w);return 0;}
if(b[x])f[find(b[x])]=fy;else b[x]=y;
if(b[y])f[find(b[y])]=fx;else b[y]=x;
}
printf("0\n");
return 0;
}

随机推荐

  1. 8.5打包libgdx为一个桌面程序(jar包)

    简陋的地图编辑终于做好了,于是要开始制作地图了,想导出为一个windows下可用的程序,让熟人代做地图,然后找人问了下打包流程,其实跟普通java打包为jar没什么区别,记录如下: 导出类型选第三个 ...

  2. @loj - 2674@ 「NOI2012」美食节

    目录 @description@ @solution@ @accepted code@ @details@ @description@ CZ 市为了欢迎全国各地的同学,特地举办了一场盛大的美食节. 作 ...

  3. python实现以立春为起点n为周期任意日期所在的日期区间

    python实现以立春为起点n为周期任意日期所在的日期区间 需求 话不多说,直接上具体需求. ''' 以每年的立春作为起始点,每N天为一个单元,任给一个日期,返回该日期所在单元的起始和结束日期.例如: ...

  4. 给radio添加点击事件

    1.单独给每个radio添加点击事件 <fieldset id="form-gra-time"> <legend>请选择日期粒度:</legend&g ...

  5. kwargs.pop是什么意思

    pop()函数一般用来删除list列表的末尾元素,同样,kwargs.pop()用来删除关键字参数中的末尾元素,比如:kwargs = {'Michael': 95, 'Bob': 75, 'Trac ...

  6. 自然语言处理课程(二):Jieba分词的原理及实例操作

    上节课,我们学习了自然语言处理课程(一):自然语言处理在网文改编市场的应用,了解了相关的基础理论.接下来,我们将要了解一些具体的.可操作的技术方法. 作为小说爱好者的你,是否有设想过通过一些计算机工具 ...

  7. C# 比较两张图片是否完全相同

    本文演示如何比较两张图片是否完全相同. (注意:如果是比较两张图片是否相似,则比较复杂,涉及到机器学习) 方法一:把图片保存到内存流中,然后转化成 Base64 字符串进行比较 using Syste ...

  8. Python __call__详解

    可以调用的对象 关于 __call__ 方法,不得不先提到一个概念,就是可调用对象(callable),我们平时自定义的函数.内置函数和类都属于可调用对象,但凡是可以把一对括号()应用到某个对象身上都 ...

  9. Gora是一个类似Hibernate的ORM框架

    Gora是一个类似Hibernate的ORM框架,但是不只是支持关系数据库,更重要支持NoSQL之类大数据的存储. 支持NoSQL之类大数据的存储 Apache Gora是一个开源的ORM(Objec ...

  10. phpstorm 有的单词下有下划线,怎么去掉?

    settings -> Editor -> Colors & Fonts -> General ->Errors and Warnings然后你会看见下面的示例代码.点 ...