[BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
建图方式:
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 善意的投票[最小割]相关推荐
- bzoj1934 [Shoi2007]Vote 善意的投票 最小割
一上来容易想到缩点dp,但由于一个集合是没法用状态表示的,所以不能dp 然后就可以想到最小割,即通过割边和代价完成分配: 就比较好做了,默认选0就和0连边,默认选1就和1连边,朋友之间连边,如果在同一 ...
- 【BZOJ2768】[JLOI2010]冠军调查/【BZOJ1934】[Shoi2007]Vote 善意的投票 最小割
[BZOJ2768][JLOI2010]冠军调查 Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教 ...
- bzoj1934: [Shoi2007]Vote 善意的投票(最小割)
传送门 考虑源点为同意,汇点为反对,那么只要源点向同意的连边,不同意的向汇点连边,求个最小割就是答案 然后考虑朋友之间怎么办,我们令朋友之间连双向边.这样不管怎么割都能对应一种选择情况.那么还是求一个 ...
- [bzoj1934][Shoi2007]Vote 善意的投票
来自FallDream的博客,未经允许,请勿转载,谢谢. 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为 ...
- bzoj 1934: [Shoi2007]Vote 善意的投票(最小割)
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1796 Solved: 1094 [Submit ...
- 【BZOJ 1934】 [Shoi2007]Vote 善意的投票
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1205 Solved: 746 [Submit] ...
- P2057 [SHOI2007]善意的投票 最小割
题意大致就是有n个人有两种不同的意见并且有许多朋友,需要让朋友间尽可能的统一意见(少发生冲突),如果一个人违反自己的本意也算冲突,求最少的冲突... 很明显是最小割 跑最大流算出冲突数 两种意见可 ...
- ●BZOJ 1934 [Shoi2007]Vote 善意的投票
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1934 题解: 题目有点迷. S向为1的点连边,为0的点向T连边, 在有关系的两个点之间连双向 ...
- BZOJ 1934: [Shoi2007]Vote 善意的投票
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1934 求图的最小割=求一下图的最大流. #include <iostream> ...
最新文章
- css的padding
- 前端获取后端传来的session_java后台如何获取,前台传来的表单数据
- 队列判空_三分钟基础:什么是队列?
- PHP中封装mysql数据库链接(简单版)
- VMware仅主机模式访问外网
- 转 Grand Central Dispatch 基础教程:Part 1/2 -swift
- C#LeetCode刷题之#706-设计哈希映射(Design HashMap)
- [Essay] Blog 带来机会?
- 电脑控制iphone_用iPhone别再傻傻地直接盯屏幕,按下这个按钮,屏幕放大10倍不止...
- 从工作到创业迈开这一步很艰难吗
- 深入理解redis复制原理
- 解决过拟合现象的六种姿势
- 计算机三级数据库要安装什么软件,计算机三级数据库技术题库app
- 北理珠计算机专业在广东排第几,重磅!省内同类院校第一 北理珠2019广东投档线公布!...
- 使用导入 Excel 的方式批量修改文件夹名称
- 鸿蒙之唯一真界,275无量量劫即将到来,束手无策的命运
- 微信公众号私信回复内容怎么设置
- Windows家庭版如何打开本地组策略编辑器
- 凯悦旗下中高端酒店品牌逸扉在上海亮相
- 【3D目标检测】Monocular 3D Object Detection with Pseudo-LiDAR Point Cloud
热门文章
- Win7下使用U盘安装Ubuntu16.04双系统图文教程(亲测)
- Ubuntu16.04几分钟自动断网问题
- 关于Eclipse中各个文件(*.java *.jsp *.xml)文字大小的设定。
- DB2添加数据时主键、唯一键冲突的解决方法
- python-django-redis拒绝连接问题解决_20191121
- python3.6.1+selenium3.0环境安装问题及解决方法
- epel安装第三方扩展源后,运行yum报错的解决方案
- 造成跨域的原因和解决方法
- 【Python】CentOs7 Python3安装Openssl以及解决ssl问题
- 如何使用putExtra()和getExtra()来表示字符串数据