BZOJ 2768 冠军调查(最小割)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2768
题意:给出一个无向图,每个点有一个值0或者1。现在重新设置每个点的值0或者1。设重新设置后的点与原来的点有x个点的值不一样;重新设置后有y条边(u,v)使得u和v的值不同。最小化x+y。
思路:若初始值为1则原点向其连边;否则其向汇点连边。对于边(u,v),u和v的值不同,则连边。求最小割。若左侧被割到,则表示将其改为0;右侧被割到,则表示将其改为1;中间被割到则表示两边冲突。
struct node
{
int v,cap,next;
};
node edges[N];
int head[N],e;
void add(int u,int v,int cap)
{
edges[e].v=v;
edges[e].cap=cap;
edges[e].next=head[u];
head[u]=e++;
}
void Add(int u,int v,int cap)
{
add(u,v,cap);
add(v,u,0);
}
int pre[N],h[N],num[N],cur[N];
int Maxflow(int s,int t,int n)
{
int i;
for(i=0;i<=n;i++) h[i]=num[i]=0,cur[i]=head[i];
int ans=0,u=s,v,x,Min;
while(h[u]<n)
{
if(u==t)
{
Min=INF+1;
for(i=s;i!=t;i=edges[cur[i]].v)
{
x=cur[i];
if(edges[x].cap<Min) Min=edges[x].cap,v=i;
}
ans+=Min; u=v;
for(i=s;i!=t;i=edges[cur[i]].v)
{
x=cur[i];
edges[x].cap-=Min;
edges[x^1].cap+=Min;
}
}
for(i=cur[u];i!=-1;i=edges[i].next)
{
v=edges[i].v;
if(edges[i].cap>0&&h[u]==h[v]+1) break;
}
if(i!=-1)
{
cur[u]=i;
pre[edges[i].v]=u;
u=edges[i].v;
}
else
{
if(--num[h[u]]==0) break;
cur[u]=head[u];
x=n;
for(i=head[u];i!=-1;i=edges[i].next)
{
if(edges[i].cap>0) x=min(x,h[edges[i].v]);
}
h[u]=x+1;
num[x+1]++;
if(u!=s) u=pre[u];
}
}
return ans;
}
int s,t,n,m,a[N];
int main()
{
clr(head,-1);
RD(n,m);
s=0; t=n+1;
int i,x,y;
FOR1(i,n)
{
RD(a[i]);
if(a[i]) Add(s,i,1);
else Add(i,t,1);
}
FOR1(i,m)
{
RD(x,y);
if(a[x]==a[y]) continue;
if(a[x]) Add(x,y,1);
else Add(y,x,1);
}
PR(Maxflow(s,t,t+1));
}
BZOJ 2768 冠军调查(最小割)的更多相关文章
- BZOJ 2768: [JLOI2010]冠军调查 最小割
2768: [JLOI2010]冠军调查 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2768 Description 一年一度的欧洲足 ...
- 2768: [JLOI2010]冠军调查( 最小割 )
最小割... 怎么乱搞都可以 -------------------------------------------------------------------------------- #inc ...
- 【BZOJ-2768】冠军调查 最小割
2768: [JLOI2010]冠军调查 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 971 Solved: 661[Submit][Status ...
- [BZOJ 2768] 冠军调查
Link:https://www.lydsy.com/JudgeOnline/problem.php?id=2768 Solution: 一道比较基础的最大流的题目 一般看到将点分为两类的题目就要往网 ...
- JLOI2010 冠军调查 最小割
var b,f:..] of longint; s,t,i,j,n,m,x,y:longint; l,h:..]of longint; a:..,..]of longint; procedure bf ...
- bzoj 1497 最大获利 - 最小割
新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研 ...
- [BZOJ 2127] happiness 【最小割】
题目链接:BZOJ - 2127 题目分析 首先,每个人要么学文科,要么学理科,所以可以想到是一个最小割模型. 我们就确定一个人如果和 S 相连就是学文,如果和 T 相连就是学理. 那么我们再来确定建 ...
- BZOJ.3532.[SDOI2014]LIS(最小割ISAP 退流)
BZOJ 洛谷 \(LIS\)..经典模型? 令\(f_i\)表示以\(i\)结尾的\(LIS\)长度. 如果\(f_i=1\),连边\((S,i,INF)\):如果\(f_i=\max\limits ...
- BZOJ 2561 最小生成树 | 网络流 最小割
链接 BZOJ 2561 题解 用Kruskal算法的思路来考虑,边(u, v, L)可能出现在最小生成树上,就是说对于所有边权小于L的边,u和v不能连通,即求最小割: 对于最大生成树的情况也一样.容 ...
随机推荐
- css3颜色渐变
从上到下的线性渐变: #grad { background: -webkit-linear-gradient(red, blue); /* Safari 5.1 - 6.0 */ backgrou ...
- Fatal error: Call to a member function bind_param() on a non-object in
今天在练习 mysql是出现错误: Fatal error: Call to a member function bind_param() on a non-object in 解决步骤: 1. ...
- empty()、html("")和text("")
empty().html("")和text("")在删除匹配元素内内容时是一样的.jQuery源码中实现有所不同,但效果相同.可以测试一下源码: <!DO ...
- 锋利的JQuery(二)
释义: DOM:Document Object Model 文档对象模型 DOM操作细分:DOM Core .HTML-DOM.CSS-DOM text():对HTML文档和XML文档都有效
- ueditor .NET版本提示uploader、Config类同时存在于两个dll中
在网上查看了下,主要有两种解决办法 1.直接删除,以下引用. <%@ Assembly Src="Uploader.cs" %><%@ Assembly Src= ...
- 161124、Java 异常处理的误区和经验总结
本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳.只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验, ...
- 我的Windows naked apps
0. 驱动精灵全能网卡版 1. Microsoft Office 2010/2013 2. IE 11 3. Filezilla Client & Server 4. Google Chrom ...
- zabbix监控mysql主从
最近在公司搭建了zabbix监控系统,现在需要用zabbix来监控mysql的主从同步情况 现在说一下配置的详细步骤: 1.首先给mysql分配一个监控的账号: mysql> grant rep ...
- grads 用arcgis分析站点的网格
第一步,用工具创建渔网(要素类) 第二步:将站点excel导入,生成点要素 站点excle,点击上面节点导出数据即可. 第三步,叠加在一起,找网格编号.
- rotate array 旋转数组
class Solution {public: void rotate(vector<int>& nums, int k) { int n=nums.size(); int i=0 ...