网络流入门题目 - bzoj 1001
Sample Output14
Output
输出一个整数,表示参与伏击的狼的最小数量.
Sample Input
- using namespace std;
- #define ll long long
- const int maxn = 1e6+5;
- const int mod = 1e9+7;
- const double eps = 1e-9;
- const double pi = acos(-1.0);
- const int inf = 0x3f3f3f3f;
- int read() { //输入挂
- int x = 0, f = 1; register char ch = getchar();
- while (ch<'0' || ch>'9') { if (ch == '-')f = -1; ch = getchar(); }
- while (ch >= '0'&&ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
- return x*f;
- }
- int n, m;
- struct node
- {
- int to, flow, next;
- }edge[6*maxn];
- int head[maxn];
- int cnt = 0;
- void addedge(int u, int v, int w){
- edge[cnt].next = head[u], edge[cnt].to = v, edge[cnt].flow = w, head[u] = cnt++;
- edge[cnt].next = head[v], edge[cnt].to = u, edge[cnt].flow = w, head[v] = cnt++;
- }
- int deep[maxn], que[maxn];
- bool bfs(int s, int t){
- int head1 = 0, tail1 = 1;
- memset(deep, 0, sizeof(deep));
- que[0] = s; deep[s] = 1;
- while(head1 < tail1){
- int u = que[head1++];
- for(int i = head[u]; i != -1; i = edge[i].next){
- int v = edge[i].to;
- if (!deep[v] && edge[i].flow) {
- deep[v] = deep[u]+1;
- que[tail1++] = v;
- }
- }
- }
- return deep[t];
- }
- int dfs(int u, int f1){
- if (u == n*m || f1 == 0) return f1; // !!!!!
- int f = 0;
- for(int i = head[u]; i != -1; i = edge[i].next){
- int v = edge[i].to;
- if (edge[i].flow && deep[v] == deep[u]+1){
- int x = dfs(v, min(f1, edge[i].flow));
- edge[i].flow -= x; edge[i^1].flow += x;
- f1 -= x, f += x;
- if (f1 == 0) return f;
- }
- }
- if (!f) deep[u] = -2;
- return f;
- }
- void solve() {
- int res = 0;
- while(bfs(1, n*m)) {
- res += dfs(1, inf);
- }
- cout << res << endl;
- }
- int main() {
- n = read(), m = read();
- int i = 1, j = 2;
- int x;
- memset(head, -1, sizeof(head));
- for(int k = 1; k <= n*m; k++){
- if (i%m == 0) {i++, j++; continue;}
- x = read();
- addedge(i, j, x);
- i++, j++;
- }
- i = 1, j = 1+m;
- for(int k = 1; k <= (n-1)*m; k++){
- x = read();
- addedge(i, j, x);
- i++, j++;
- }
- i = 1, j = 2+m;
- for(int k = 1; k <= (n-1)*m; k++){
- if (i%m == 0) {i++, j++; continue;}
- x = read();
- addedge(i, j, x);
- i++, j++;
- }
- solve();
- return 0;
- }
网络流入门题目 - bzoj 1001的更多相关文章
- BZOJ 1001 [BeiJing2006] 狼抓兔子(平面图最大流)
题目大意 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的.而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- nyoj_323:Drainage Ditches(网络流入门)
题目链接 网络流入门@_@,此处本人用的刘汝佳的Dinic模板 #include<bits/stdc++.h> using namespace std; const int INF = 0 ...
- 网络流入门-POJ1459PowerNetwork-Dinic模板
(我有什么错误或者你有什么意见,欢迎留言或私聊!谢谢!) (Ps:以前听说过网络流,想着以后再学,这次中南多校赛也碰到有关网络流的题目,想着这两天试着学学这个吧~~ 这是本人网络流入门第二题,不知道怎 ...
- Tile Cut~网络流入门题
Description When Frodo, Sam, Merry, and Pippin are at the Green Dragon Inn drinking ale, they like t ...
- 草地排水 洛谷P2740 最大流 入门题目
草地排水 洛谷P2740 最大流入门题目 题意 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一 ...
- s - t 平面图最大流 (附例题 bzoj 1001)
以下均移自 周冬的<两极相通-浅析最大最小定理在信息学竞赛中的应用> 平面图性质 1.(欧拉公式)如果一个连通的平面图有n个点,m条边和f个面,那么f=m-n+2 2.每个平面图G都有一个 ...
- poj 2186 强连通入门题目
每头牛的梦想就是成为牛群中最受欢迎的牛. 在一群N(1 <= N <= 10,000)母牛中, 你可以得到M(1 <= M <= 50,000)有序的形式对(A,B),告诉你母 ...
- 树形DP入门题目推荐以及解析
关于树形DP几道入门题目 今天恶补树形DP,感觉海星. 其实挺简单的. 介绍几道例题,我会的. 1.洛谷P1352 没有上司的舞会 我的一篇题解 我们可以考虑每一个节点都是有两种情况. 一个是被邀请: ...
- BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 算法讨论: 1.可以用最大流做,最大流等于最小割. 2.可以把这个图转化其对偶图,然 ...
随机推荐
- Laravel5.3使用学习笔记---中间件
Laravel提供了中间件的使用.那什么是中间件呢,根据用法,我总结为,夹在“请求—>控制器—>响应—>end”中间运行的代码片段.本文将以官方英文文本为基础资料进行笔记记录. La ...
- Intellij IDEA 如何使用Jrebel热部署
My Jrebel 已经不再提供免费使用了,或使用破解版Jrebel 或可以移步至 HotSwapAgent,或使用破解的Jrebel. 一个java web项目,在写的过程中我们需要不断调试,如果没 ...
- P1022 绵羊排序
题目描述 聪聪想要给他家农场里的 \(n\) 只绵羊按照品质从高到低进行排序. 农场里的 \(n\) 只绵羊编号从 \(1\) 到 \(n\) ,第 \(i\) 只绵羊的体重为 \(w_i\) ,高度 ...
- Vue与React比较
与React 相似: (1)虚拟DOM(Virtual DOM) 虚拟DOM的诞生是基于:改变真实的DOM状态远比改变一个JS对象的花销要大的多. 虚拟DOM是一个映射真实DOM的JS对象,当有变化产 ...
- 【t081】序列长度
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有一个整数序列,我们不知道她的长度是多少(即序列中整数的个数),但我们知道在某些区间中至少有多少个整数 ...
- JUnit 单元测试断言推荐 AssertJ
文章转自:http://sgq0085.iteye.com/blog/2030609 前言 由于JUnit的Assert是公认的烂API,所以不推荐使用,目前推荐使用的是AssertJ. Assert ...
- 2018-11-5-win10-uwp-异步转同步
title author date CreateTime categories win10 uwp 异步转同步 lindexi 2018-11-05 10:18:40 +0800 2018-2-13 ...
- Cisco DNA-C POC环境配置
Step1:在DNA-C上创建Site,本例创建Global->China->WangJiang->20 F如下图: Step2:配置fusion区域的AAA和NTP等信息,如下图: ...
- 修改Samba密码后无法登录
Samba修改用户名密码后,无法登陆 之后每次进去都是以这样的username和passwd进去的,如何才能使用其他的用户来重新登录samba server呢? 首先使用在开始菜单里面输入cmd: 进 ...
- lambda应用
def test(a, b, func): result = func(a, b) print(result) test(10, 15, lambda x, y: x + y) #coding=utf ...