洛谷P1525关押罪犯——二分做法
题目:https://www.luogu.org/problemnew/show/P1525
二分答案,二分图染色判断是否可行。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,ct,head[20005],ans,mx,mid;
bool col[20005],vis[20005];
struct N{
int to,next,w;
}edge[200005];
void add(int x,int y,int z)
{
ct++;
edge[ct].to=y;
edge[ct].next=head[x];
edge[ct].w=z;
head[x]=ct;
}
bool dfs(int x)
{
for(int i=head[x];i;i=edge[i].next)
{
int u=edge[i].to;
if(edge[i].w<=mid)continue;
if(!vis[u])
{
col[u]=!col[x];
vis[u]=1;
if(dfs(u))return 1;
}
else if(vis[u]&&col[u]==col[x])return 1;
}
return 0;
}
void per(int l,int r)
{
if(l>=r)//=!
{
ans=l;
return;
}
memset(col,0,sizeof col);
memset(vis,0,sizeof vis);
mid=(l+r)/2;
bool flag=0;
for(int i=1;i<=n;i++)
if(!vis[i])
{
vis[i]=1;col[i]=1;
if(dfs(i))
{
flag=1;
break;
}
}
if(flag)per(mid+1,r);
else per(l,mid);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);add(y,x,z);//无向边
mx=max(mx,z);
}
per(0,mx);
printf("%d",ans);
return 0;
}
洛谷P1525关押罪犯——二分做法的更多相关文章
- 洛谷 P1525 关押罪犯
题目链接 https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪 ...
- 洛谷P1525 关押罪犯
To 洛谷.1525 关押罪犯 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用 ...
- 洛谷 P1525 关押罪犯==codevs 1069 关押罪犯[NOIP 2010]
P1525 关押罪犯 513通过 1.4K提交 题目提供者该用户不存在 标签图论并查集NOIp提高组2010 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 咳咳.竟MLE了. 囧.运行时错误 ...
- 洛谷P1525 关押罪犯(并查集、二分图判定)
本人蒟蒻,只能靠题解AC,看到大佬们的解题思路,%%%%%% https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编 ...
- [NOIP2010] 提高组 洛谷P1525 关押罪犯
刚才做并查集想到了这道以前做的题,干脆一并放上来 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可 ...
- NOIP2010 codevs1069 洛谷P1525 关押罪犯
Problem Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极 不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用 ...
- 洛谷——P1525 关押罪犯
https://www.luogu.org/problem/show?pid=1525 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间 ...
- 【题解】洛谷 P1525 关押罪犯
题目 https://www.luogu.org/problemnew/show/P1525 思路 把所有边sort一遍从大到小排列 运用并查集思想敌人的敌人就是朋友 从最大边开始查找连着的两个罪犯 ...
- 洛谷P1525关押罪犯
传送门啦 想让最大值最小,所以,这题可以用二分法,排序之后发现可以并查集,因为要使最大值最小,排序后这个最大值是存在的. 对于会冲突的两个罪犯,我们连一条无向边,然后按权值从大到小排序,从大到小枚举每 ...
随机推荐
- Cesium--气泡弹窗
参考资料 首先感谢以下博主们的帮助,本人刚接触Cesium不久,无奈只能拾人牙慧了. 由于cesium没有自带的点击弹出气泡的功能,所以需要自己去开发一个这样的功能,网络上资源很多,看到基本思路都一致 ...
- [转] 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术
转自:http://blog.csdn.net/freshlover/article/details/11579669 Ⅰ.绝对定位居中(Absolute Centering)技术 我们经常用marg ...
- web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!
本文转自:http://www.cnblogs.com/babosa/p/7355468.html 需求 问题:有没有flash播放RTSP的播放器?H5能不能支持RTSP播放? 答案:没见过,以后估 ...
- Spring 简单描述
摘抄自知乎 建议不要硬着头皮看spring代码,本身的代码800多m,就是不上班开始看也不知道什么时候看完.如果想学学ioc,控制反转这些建议看看jodd项目,比较简练,但是我仍然不建议过多的看这些框 ...
- php总结7——文件函数库、序列化数据、文件包含
7.1 文件函数库 php用来操作文件的 1) fopen 代开文件或URL 格式:resource fopen(string $filename, string $mode) 'r' 只读方式 ...
- import org.marker.weixin.DefaultSession; import org.marker.weixin.HandleMessageAdapter; import org.marker.weixin.MySecurity; import org.marker.weixin.msg.*;
需要以下微信包可以添加我的微信公众号 回复“微信api”即可得到jar链接,以及maven添加本地jar方法,以及更改后的源代码 import org.marker.weixin.DefaultSes ...
- UVA - 11624 Fire! 【BFS】
题意 有一个人 有一些火 人 在每一秒 可以向 上下左右的空地走 火每秒 也会向 上下左右的空地 蔓延 求 人能不能跑出来 如果能 求最小时间 思路 有一个 坑点 火是 可能有 多处 的 样例中 只有 ...
- MySQL 中事务的实现
在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的: 在这篇文章中,我们将对事务的实现进行分析, ...
- (C)位字段(bit-field)
位字段(bit-field) 在存储空间很宝贵的情况下,有可能需要将多个对象保存在一个机器字中,一种常用的方法是:使用类似于编译器符号表的单个二进制位标志集合,外部强加的数据格式(如设备接口等寄存器) ...
- BZOJ 3043 IncDec Sequence:反向差分
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3043 题意: 给定一个长度为n的数列a[i],每次可以选择一个区间[l,r],使这个区间内 ...