题链:

http://www.lydsy.com/JudgeOnline/problem.php?id=1934

题解:

题目有点迷。

S向为1的点连边,为0的点向T连边,
在有关系的两个点之间连双向边。
以上边的容量都为1。
然后求最小割,最小割==最大流,dinic实现。
代码:

#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#define MAXN 350
#define INF 0x3f3f3f3f
using namespace std;
struct Edge{
int to[MAXN*MAXN*2],cap[MAXN*MAXN*2],nxt[MAXN*MAXN*2],head[MAXN],ent;
void Init(){
ent=2; memset(head,0,sizeof(head));
}
void Adde(int u,int v,int w){
to[ent]=v; cap[ent]=w;
nxt[ent]=head[u]; head[u]=ent++;
to[ent]=u; cap[ent]=0;
nxt[ent]=head[v]; head[v]=ent++;
}
int Next(bool type,int i){
return type?head[i]:nxt[i];
}
}E;
int N,M,T,S;
int d[MAXN],cur[MAXN];
bool bfs(){
memset(d,0,sizeof(d));
queue<int>q; q.push(S); d[S]=1;
while(!q.empty()){
int u=q.front(); q.pop();
for(int i=E.Next(1,u);i;i=E.Next(0,i)){
int v=E.to[i];
if(d[v]||!E.cap[i]) continue;
d[v]=d[u]+1; q.push(v);
}
}
return d[T];
}
int dfs(int u,int reflow){
if(!reflow||u==T) return reflow;
int flowout=0,f;
for(int &i=cur[u];i;i=E.Next(0,i)){
int v=E.to[i];
if(d[v]!=d[u]+1) continue;
f=dfs(v,min(reflow,E.cap[i]));
reflow-=f; E.cap[i]-=f;
flowout+=f; E.cap[i^1]+=f;
if(!reflow) break;
}
if(!flowout) d[u]=0;
return flowout;
}
int Dinic(){
int flow=0;
while(bfs()){
memcpy(cur,E.head,sizeof(E.head));
flow+=dfs(S,INF);
}
return flow;
}
int main()
{
scanf("%d%d",&N,&M); S=N+1,T=N+2;
E.Init();
for(int i=1,x;i<=N;i++){
scanf("%d",&x);
if(x==1) E.Adde(S,i,1);
else E.Adde(i,T,1);
}
for(int i=1,a,b;i<=M;i++){
scanf("%d%d",&a,&b);
E.Adde(a,b,1);
E.Adde(b,a,1);
}
int ans=Dinic();
printf("%d",ans);
return 0;
}

●BZOJ 1934 [Shoi2007]Vote 善意的投票的更多相关文章

  1. BZOJ 1934: [Shoi2007]Vote 善意的投票 最小割

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnl ...

  2. 最小投票BZOJ 1934([Shoi2007]Vote 善意的投票-最小割)

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下最小投票 1934: [Shoi2007]Vote 好心的投票 Time Limit: 1 Sec Memory L ...

  3. BZOJ 1934 [Shoi2007]Vote 善意的投票(最小割)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1934 [题目大意] 每个人对于投票都有自己原来的观点:1或者0, 他可以违背自己原来的 ...

  4. 【刷题】BZOJ 1934 [Shoi2007]Vote 善意的投票

    Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可 ...

  5. bzoj 1934: [Shoi2007]Vote 善意的投票

    #include<cstdio> #include<iostream> #define M 100000 #include<cstring> using names ...

  6. bzoj 1934: [Shoi2007]Vote 善意的投票 (最小割)

    原来是赞同的连源,原来是反对的连汇,然后是朋友的就连在一起,这样最小割就是割掉违背和谐的吧 type arr=record toward,next,cap:longint; end; const ma ...

  7. 1934: [Shoi2007]Vote 善意的投票

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1174  Solved: 723[Submit][S ...

  8. 【BZOJ】1934: [Shoi2007]Vote 善意的投票(网络流/-二分图匹配)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1934 一开始我想到了这是求最小割,但是我认为这题二分图可做,将1的放在左边,0的放在右边,然后朋友连 ...

  9. 1934: [Shoi2007]Vote 善意的投票 - BZOJ

    Description幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以 ...

随机推荐

  1. 学号:201621123032 《Java程序设计》第7周学习总结

    1:本周学习总结 1.1:思维导图:Java图形界面总结 2:书面作业 2.1: GUI中的事件处理 2.1.1: 写出事件处理模型中最重要的几个关键词 事件:如鼠标单击,滑动,输入汉字等. 事件源: ...

  2. python 操作PostgreSQL

    pip install psycopg Python psycopg2 模块APIs 以下是psycopg2的重要的的模块例程可以满足Python程序与PostgreSQL数据库的工作. S.N. A ...

  3. 【译】Gradle 的依赖关系处理不当,可能导致你编译异常

    文章 | Ashesh Bharadwaj 翻译 | 承香墨影 授权 承香墨影 翻译.编辑并发布 在 Android Studio 中,Gradle 构建过程对于开发者来说,很大程度上是抽象的.作为一 ...

  4. nyoj Color the fence

    Color the fence 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Tom has fallen in love with Mary. Now Tom w ...

  5. python全栈开发-json和pickle模块(数据的序列化)

    一.什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flat ...

  6. Mego(08) - 高级建模

    对于模型建立Mego还提供了一些高级主题 数据库函数映射 我们可以将现有的CLR方法映射到指定数据库的标题函数上,如下所示 public class OrderManageEntities : DbC ...

  7. hadoop2.6.0实践:控制台入口url列表

    hadoop web控制台页面的端口整理: 50070:hdfs文件管理 8088:ResourceManager 8042:NodeManager 19888:JobHistory(使用" ...

  8. linux下xargs和管道的区别

    管道将前面的标准输出作为后面的标准输入,xargs则将标准输入作为命令的参数 一.简介 1.背景 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了x ...

  9. NHibernate的基本使用

    一.O/R Mapping 概论 工厂模式+反射+每个数据库的DAL层来解决数据访问层的代码 针对数据库表中字段的变化我们是无法预料的,所以每一次用户需求的修改都会直接导致我们程序员来修改—实体类(B ...

  10. leetcode算法: Find the Difference

    Given two strings s and t which consist of only lowercase letters.String t is generated by random sh ...