【最大流,SPFA,卡常】狼抓兔子
前言
论卡常的重要性
评测记录。。。
卡常前。。。
卡常后。。。
竟然。。。就A了!!!!
链接
https://www.luogu.org/problemnew/show/P4001
大意
有无限只兔子在左上角,现在它们要走到右下角,之间有很多通道,但通道只能容纳一定数量的兔子,狼可以在一定道路堵截兔子,一只狼只能堵截一条兔子,求能堵截所有兔子的狼数。
思路
这道题就是就相当于求最小割,按照这张图上说的建图差不多就得了
记得反向边的容量也要为K,因为这是无向图!
似乎这道题也能用 SPFA S P F A SPFA过,但本蒟蒻太弱(lan)就没打了。。。
代码
#include<cstring>
#include<cstdio>
#include<queue>
#define N 3500001
#define id(i,j) (~-i)*m+j
using namespace std;int m,n,f,s,t,sum,k;char c;
struct node{int next,to,w;}e[N<<1];
int l[N],tot,d[N];
int read()
{f=0;while (c=getchar(),c<=47||c>=58);f=(f<<3)+(f<<1)+c-48;while (c=getchar(),c>=48&&c<=57) f=(f<<3)+(f<<1)+c-48;return f;
}
void add(int u,int v,int w)
{e[tot]=(node){l[u],v,w};l[u]=tot++;e[tot]=(node){l[v],u,w};l[v]=tot++;return;
}
bool bfs()
{memset(d,-1,sizeof(d));queue<int>q;d[s]=0;q.push(s);while(q.size()){int x=q.front();q.pop();for(int i=l[x];~i;i=e[i].next){int y=e[i].to;if(e[i].w&&d[y]==-1){d[y]=d[x]+1;q.push(y);if(y==t) return true;}}}return false;
}
int dfs(int x,int flow)
{if(x==t||!flow) return flow;int rest=0,k=0;for(int i=l[x];~i;i=e[i].next){int y=e[i].to;if(d[x]+1!=d[y]||!e[i].w)continue;f=dfs(y,min(flow-rest,e[i].w));if(!f) {d[y]=-1;continue;}//这里很重要e[i].w-=f;rest+=f;e[i^1].w+=f;if(rest==flow) return flow;//这里也是}return rest;
}
void dinic()
{while(bfs()) sum+=dfs(s,1e9);return;
}
int main()
{memset(l,-1,sizeof(l));n=read();m=read();s=1;t=id(n,m);for(int i=1;i<=n;i++)for(int j=1;j<m;j++)k=read(),add(id(i,j),id(i,j+1),k);for(int i=1;i<n;i++)for(int j=1;j<=m;j++)k=read(),add(id(i,j),id(i+1,j),k);for(int i=1;i<n;i++)for(int j=1;j<m;j++)k=read(),add(id(i,j),id(i+1,j+1),k);dinic();printf("%d",sum);
}
【最大流,SPFA,卡常】狼抓兔子相关推荐
- BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 23822 Solved: 6012 [Submit ...
- bzoj 1001狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 15622 Solved: 3771 [ Sub ...
- 1001: [BeiJing2006]狼抓兔子(对偶图)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 23595 Solved: 5940 Descrip ...
- P2030 - 【BJOI2006】狼抓兔子
P2030 - [BJOI2006]狼抓兔子 Description 八中OJ上本题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现 ...
- 【BJOI2006】狼抓兔子
P2030 - [BJOI2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它 ...
- BZOJ 1001 狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 25653 Solved: 6512 [Submit ...
- BZOJ1001 狼抓兔子 终于过了!
时间来不及了,先贴代码吧!有时间再写. 好苦逼啊,WA了若干次,还有一次RE,一次TLE. 虽然主要运用的算法和资料都由师兄提供了.还是太弱了,太天真了. 首先,数据范围就WA了,RE了,TLE了. ...
- 【bzoj1001】【狼抓兔子】
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 12719 Solved: 3017 [Submit][ ...
- bzoj1001/BJOI2006 狼抓兔子
1001: [BeiJing2006]狼抓兔子(传送门) 图论新知识..没学过.. 平面图最小割等于对偶图的最短路 详见课件:http://wenku.baidu.com/view/8f1fde586 ...
- 【BZOJ1001】狼抓兔子题解
BZOJ1001: [BeiJing2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还 ...
最新文章
- 马斯克“口无遮拦”发推特又挨批,被指无视法院命令
- 自律到极致-人生才精致:第2期
- hi3559 h264
- 简单的java多线程源码分享(二)
- python 的 str bytes 区别
- 关于 Oracle分页数据重复的问题
- python装饰器详解51-python装饰器使用实例详解
- it 脑裂_脑裂官方版下载
- python寻找完全平方数_少儿编程|Python小课堂 – 寻找aabb完全平方数
- SQLCel匹配原数据信息,更新原数据所有信息并插入新数据的过程
- 创业者防坑手册:面对强大的资本力量,你该如何正当防卫?
- 与Lucene 4.10配合的中文分词比较
- 论文的主要观点怎么写?
- 华为鸿蒙系统老手机能用吗_华为使用自家“鸿蒙”系统,旧手机的安卓系统可以更新成那个系统吗?...
- ChatGPT开源平替——OpenChatKit(前OpenAI团队打造)
- AD网络标号高亮设置
- systemd、upstart和system V
- 文献管理软件 | endnote与zotero的对比
- 银行存管java 对接_Jay su-华正商务旅行社-4年中级java工程师-猿急送
- 手把手教你搭建SpringBoot+MySQL+Mybatis项目(采坑日记)