这个题一上来 没有思路,后来想没有思路就二分吧

那么我们来二分

首先,大于当前的mid值的关系,不能出现在一个集合里

(即关系形成的图是一个二分图,判定二分图可以二染色)

如果不能形成二分图,那么说明有些关系要在一个集合里,那就向上二分

否则向下二分

#include<cstdio>
#include<cstring>
#include<queue>
#include<set>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
typedef long long LL;
typedef pair<int,int>pii;
const int N=2e4+;
const int INF=0x3f3f3f3f;
int head[N],tot,n,m;
struct Edge
{
int u,v,next;
bool operator<(const Edge &rhs)const
{
return next<rhs.next;
}
} edge[N*],o[N*];
void add(int u,int v)
{
edge[tot].v=v;
edge[tot].next=head[u];
head[u]=tot++;
}
int cur[N];
bool dfs(int u,int f)
{
cur[u]=(cur[f]^);
for(int i=head[u]; ~i; i=edge[i].next)
{
int v=edge[i].v;
if(v==f||cur[v]==(cur[u]^))continue;
if(cur[v]==cur[u])return false;
if(!dfs(v,u))return false;
}
return true;
}
bool judge(int x)
{
Edge tmp;
tmp.next=x;
int pos=upper_bound(o+,o++m,tmp)-o;
if(pos>m)return true;
memset(head,-,sizeof(head)),tot=;
memset(cur,-,sizeof(cur));
int s;
for(int i=pos; i<=m; ++i)
add(o[i].u,o[i].v),add(o[i].v,o[i].u),s=o[i].u;
for(int i=pos;i<=m;++i){
int s=o[i].u;
if(cur[s]!=-)continue;
cur[s]=;
if(!dfs(s,s))return false;
}
return ;
}
int main()
{
scanf("%d%d",&n,&m);
if(m==)
{
printf("0\n");
return ;
}
for(int i=; i<=m; ++i)
scanf("%d%d%d",&o[i].u,&o[i].v,&o[i].next);
o[].next=;
sort(o+,o++m);
int l=,r=m;
while(l<r)
{
int mid=(l+r)>>;
if(judge(o[mid].next))r=mid;
else l=mid+;
}
printf("%d\n",o[(l+r)>>].next);
return ;
}

NOIP2010关押罪犯 二分+二染色的更多相关文章

  1. # 「NOIP2010」关押罪犯(二分图染色+二分答案)

    「NOIP2010」关押罪犯(二分图染色+二分答案) 洛谷 P1525 描述:n个罪犯(1-N),两个罪犯之间的仇恨值为c,m对仇恨值,求怎么分配使得两件监狱的最大仇恨值最小. 思路:使最大xxx最小 ...

  2. NOIP2010关押罪犯[并查集|二分答案+二分图染色 | 种类并查集]

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

  3. TYVJ P1403 [NOIP2010]关押罪犯

    TYVJ的编译器总是要搞点岔子出来,上次是double必须用f输出而不能用lf,这次又不知道为何CE 于是去了洛谷P1525测试,AC 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1 ...

  4. 【洛谷P1525】[NOIP2010]关押罪犯

    关押罪犯 题目链接 思路: 二分图或并查集 这里讲并查集算法: 1.将每对罪犯的冲突关系按影响从大到小排序 2.将集合与(i+n)合并表示编号为i的罪犯不能在该集合内 3.依次从大到小处理冲突关系: ...

  5. noip 2010 关押罪犯 二分答案+二分图染色 || 并查集

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

  6. noip 2010 关押罪犯 (二分图染色 并茶几)

    /* 二分图染色版本 两个监狱对应二部图的两部分 在给定的怨气值里二分 对于每一个Ci 进行染色判断是否合法 染色的时候 如果这条边的ci > Ci 这两个人就带分开 即染成不同的颜色 如果染色 ...

  7. noip2010 关押罪犯 (vijos1776)

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

  8. NOIP2010关押罪犯

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

  9. 洛谷P1525关押罪犯——二分做法

    题目:https://www.luogu.org/problemnew/show/P1525 二分答案,二分图染色判断是否可行. 代码如下: #include<iostream> #inc ...

随机推荐

  1. 安装Apache Web 服务器软件

    Apache下载地址:http://pan.baidu.com/s/1kTKCEOn 1: 右击安装 2: 3: 4: 5:安装成功: 6:测试在浏览器地址栏输入:localhost; 会出现一个页面 ...

  2. evaluateScript--evaluatePopoverScript--区别

    appcan.window.evaluateScript({})              //window.open()页面之间使用 appcan.window.evaluatePopoverScr ...

  3. php使用phpmailer发送邮件

    本人新手,由于要做邮件发送验证码,所以找到和搜集到这些,本人亲测完全可以用 这是163邮箱的   因为不是企业邮箱填写的账号是163的账号,但是密码是授权码 授权码的获取方式为:

  4. php查询ip地址来源归属地的脚本

    <?php header('Content-Type:text/html;charset=utf-8'); if($_GET['sub']){ $ip = $_GET['ip']; $msg = ...

  5. 【3】Bootstrap的下载和目录结构

    [1]下载 去中方官网下载http://www.bootcss.com/ 如果你是做网页练习,你可以使用CDN加速服务,免去下载等痛苦,当然你使用的时候必须有连接上网络.中方的官网也提供了很多种类的C ...

  6. 修改VC++2010界面左上角图标

    (1)在Resource View中创建或者插入一个新的Icon资源,用于你想要的程序图标,假设ID号为IDI_ICON(这种图标要有16*16和32*32两种格式的,前者用于最小化和列表显示等,后者 ...

  7. Cygwin下设置ls显示颜色

    vi ~/.bashrc 找到alias ls="xxxxxxxxxxxxxxxxxxxxxxxx"这一项,把注释去掉 修改后的这一行为: alias ls='ls -hF --c ...

  8. 浏览我的php网页时,出现的都是网页的代码

    添加php模块 ,在apache/conf/httpd.conf,如果是windows下的话,添加如下代码,具体路径你根据具体情况设置#BEGIN PHP INSTALLER EDITS - REMO ...

  9. Python图形图像处理库的介绍之Image模块

    http://onlypython.group.iteye.com/group/wiki/1372-python-graphics-image-processing-library-introduce ...

  10. c# 捕捉键盘按键

    //esc退出窗体  protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg , System.Windo ...