博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
阅读量:6577 次
发布时间:2019-06-24

本文共 1879 字,大约阅读时间需要 6 分钟。

建图方式:

S->同意 ,反对->T

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

#include 
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
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

你可能感兴趣的文章
日历控件datetimepicker(IE11)
查看>>
RH253读书笔记(5)-Lab 5 Network File Sharing Services
查看>>
CCNP路由实验(4) -- BGP
查看>>
图像卷积与滤波的一些知识点
查看>>
关于 tchart 控件的相关内容
查看>>
(转)新的挑战:敏捷开发与优秀的程序员
查看>>
JS xpath
查看>>
关于 spring MVC 配置自动扫描中 use-default-filters 属性
查看>>
LIUNX 安装 nginx
查看>>
table头部固定,内容滚动
查看>>
插入DOM元素
查看>>
Android SDK Manager 更新
查看>>
第一次作业:Linux 2.6.32的进程模型与调度器分析
查看>>
C# Excel嵌入到Winform
查看>>
修改HTML5 input placeholder 颜色及修改失效的解决办法
查看>>
Windows 服务器部署 asp.net core
查看>>
html5 随机数函数
查看>>
数据结构之图(2-1)【十字链表】适用于有向图
查看>>
你必须知道的简单的位操作技巧
查看>>
怎样合并排序数组(How to merge 2 sorted arrays?)
查看>>