建图方式:
S->同意 ,反对->T

对于每一对好友连容量为1的边

#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const int MAXN = 3e2+7;
const int MAXM = 2e5+7;
int n, m, s, t, dep[MAXN], maxflow;
struct Edge {int v, w, next;
} G[MAXM];
int tot = 1, head[MAXN], cur[MAXN];
inline void add(int u, int v, int w) {G[++tot].v=v, G[tot].w=w, G[tot].next=head[u];head[u]=tot;
}bool bfs(int s, int t) {memset(dep, 0x7f, sizeof dep);memcpy(cur+1, head+1, n*4+8);queue<int>q;while(!q.empty()) q.pop();dep[s] = 0;q.push(s);while(!q.empty()) {int u = q.front();q.pop();for(int i = head[u]; i; i = G[i].next) {int v = G[i].v, w = G[i].w;if (dep[v] > inf && w) {dep[v] = dep[u] + 1;if (v == t) return 1;q.push(v);}}}return dep[t] < inf;
}int dfs(int u, int t, int limit) {if (u == t || !limit) return limit;int flow = 0, f;for(int i = cur[u]; i; i = G[i].next) {cur[u] = i;int v = G[i].v, w = G[i].w;if (dep[v] == dep[u] + 1 && (f = dfs(v, t, min(w, limit)))) {flow += f;limit -= f;G[i].w -= f;G[i^1].w += f;if (!limit) break;}}return flow;
}void dinic(int s, int t) {while(bfs(s, t)) maxflow += dfs(s, t, inf);
}int main(void) {// memset(head, -1, sizeof head);scanf("%d%d", &n, &m);for(int i = 1; i <= n; ++i) {scanf("%d", &s);if (s) add(n+1, i, 1), add(i, n+1, 0);else add(i, n+2, 1), add(n+2, i, 0);}for(int i = 1; i <= m; ++i) {int u, v;scanf("%d%d", &u, &v);add(u, v, 1), add(v, u, 1);
//      add(u, v, 0), add(v, u, 0);//加不加都行,因为不会退流}dinic(n+1, n+2);printf("%d", maxflow);return 0;
}

转载于:https://www.cnblogs.com/storz/p/10191524.html

[BZOJ1934][Shoi2007]Vote 善意的投票[最小割]相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. P2057 [SHOI2007]善意的投票 最小割

    题意大致就是有n个人有两种不同的意见并且有许多朋友,需要让朋友间尽可能的统一意见(少发生冲突),如果一个人违反自己的本意也算冲突,求最少的冲突... 很明显是最小割   跑最大流算出冲突数 两种意见可 ...

  8. ●BZOJ 1934 [Shoi2007]Vote 善意的投票

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1934 题解: 题目有点迷. S向为1的点连边,为0的点向T连边, 在有关系的两个点之间连双向 ...

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

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

最新文章

  1. css的padding
  2. 前端获取后端传来的session_java后台如何获取,前台传来的表单数据
  3. 队列判空_三分钟基础:什么是队列?
  4. PHP中封装mysql数据库链接(简单版)
  5. VMware仅主机模式访问外网
  6. 转 Grand Central Dispatch 基础教程:Part 1/2 -swift
  7. C#LeetCode刷题之#706-设计哈希映射(Design HashMap)
  8. [Essay] Blog 带来机会?
  9. 电脑控制iphone_用iPhone别再傻傻地直接盯屏幕,按下这个按钮,屏幕放大10倍不止...
  10. 从工作到创业迈开这一步很艰难吗
  11. 深入理解redis复制原理
  12. 解决过拟合现象的六种姿势
  13. 计算机三级数据库要安装什么软件,计算机三级数据库技术题库app
  14. 北理珠计算机专业在广东排第几,重磅!省内同类院校第一 北理珠2019广东投档线公布!...
  15. 使用导入 Excel 的方式批量修改文件夹名称
  16. 鸿蒙之唯一真界,275无量量劫即将到来,束手无策的命运
  17. 微信公众号私信回复内容怎么设置
  18. Windows家庭版如何打开本地组策略编辑器
  19. 凯悦旗下中高端酒店品牌逸扉在上海亮相
  20. 【3D目标检测】Monocular 3D Object Detection with Pseudo-LiDAR Point Cloud

热门文章

  1. Win7下使用U盘安装Ubuntu16.04双系统图文教程(亲测)
  2. Ubuntu16.04几分钟自动断网问题
  3. 关于Eclipse中各个文件(*.java *.jsp *.xml)文字大小的设定。
  4. DB2添加数据时主键、唯一键冲突的解决方法
  5. python-django-redis拒绝连接问题解决_20191121
  6. python3.6.1+selenium3.0环境安装问题及解决方法
  7. epel安装第三方扩展源后,运行yum报错的解决方案
  8. 造成跨域的原因和解决方法
  9. 【Python】CentOs7 Python3安装Openssl以及解决ssl问题
  10. 如何使用putExtra()和getExtra()来表示字符串数据