题链:

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;
}

转载于:https://www.cnblogs.com/zj75211/p/7931224.html

●BZOJ 1934 [Shoi2007]Vote 善意的投票相关推荐

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

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1796  Solved: 1094 [Submit ...

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

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1934 求图的最小割=求一下图的最大流. #include <iostream> ...

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

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

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

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1205  Solved: 746 [Submit] ...

  5. 【BZOJ2768】[JLOI2010]冠军调查/【BZOJ1934】[Shoi2007]Vote 善意的投票 最小割

    [BZOJ2768][JLOI2010]冠军调查 Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教 ...

  6. [bzoj1934][Shoi2007]Vote 善意的投票

    来自FallDream的博客,未经允许,请勿转载,谢谢. 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为 ...

  7. bzoj1934: [Shoi2007]Vote 善意的投票(最小割)

    传送门 考虑源点为同意,汇点为反对,那么只要源点向同意的连边,不同意的向汇点连边,求个最小割就是答案 然后考虑朋友之间怎么办,我们令朋友之间连双向边.这样不管怎么割都能对应一种选择情况.那么还是求一个 ...

  8. bzoj1934 [Shoi2007]Vote 善意的投票 最小割

    一上来容易想到缩点dp,但由于一个集合是没法用状态表示的,所以不能dp 然后就可以想到最小割,即通过割边和代价完成分配: 就比较好做了,默认选0就和0连边,默认选1就和1连边,朋友之间连边,如果在同一 ...

  9. [BZOJ1934][Shoi2007]Vote 善意的投票[最小割]

    建图方式: S->同意 ,反对->T 对于每一对好友连容量为1的边 #include <bits/stdc++.h> using namespace std; const in ...

最新文章

  1. 客快物流大数据项目(十七):自定义镜像mycentos
  2. 【微信小程序之画布】终:手指触摸画板实现
  3. 20165206 2017-2018-2 《Java程序设计》第三周学习总结
  4. poj3076(16*16数独)
  5. 「BZOJ2200」[Usaco2011 Jan] 道路和航线 - 最短路+拓扑排序
  6. MBG配置详解及最佳实践
  7. Go -- 调用C/C++
  8. 服务器虚拟化nas存储服务器搭建,采用NAS架构优化VMware服务器虚拟化环境的存储管理.pdf...
  9. docker 删除默认连接_database – 如何从已删除的Docker容器中恢复数据?如何将其重新连接到数据?...
  10. Windows Server 2008 优化
  11. java progressbar swt_SWT(JFace)体验之ProgressBar
  12. CF547D Mike and Fish 建图
  13. 英文文本处理 c github_真香警告!有了这个搜索大法,GitHub可以玩到飞起来!
  14. 计算机交并符号,数学并集符号
  15. 【NLP】第 2 章 访问文本语料库和词汇资源
  16. mysql查询姓名第二个字_第二篇:MySQL中SELECT查询语句总结
  17. 往MYSQL中插入,读写图片!
  18. linux ssh motd 颜色,ubuntu ssh登录的时候motd被打印了两次
  19. 计算机组成原理 Computer Composition Principle唐朔飞 全书梳理(备忘自用 基本完结)
  20. 浅谈Git原理和常用命令(学习笔记)

热门文章

  1. 12.super关键字
  2. ORA-01940,删除某用户的所有对象
  3. python文件的读取和写入
  4. tensorflow 添加官方代码--以leaky_relu为例
  5. java不可变量有哪些_5.Java变量
  6. cad怎么查找未闭合_CAD无法填充的这四种方法肯定能解你燃眉之急
  7. Customize a Scheduling Policy
  8. 配置切入点表达式|| 前置通知、后置通知、异常通知、最终通知、环绕通知
  9. 实验18:使用@Autowired注解实现根据类型实现自动装配★
  10. 缓存一致性(MESI)