博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces-gym101982E(最小割)
阅读量:4968 次
发布时间:2019-06-12

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

题意:给你一个长为m,宽为n的迷宫,问你从s开始,我们需要最小的花费堵住s,使得s不能到达迷宫的边界,只有字符a,b,c,d,...这样的点才能花费对应的钱将其堵住

解题思路:思考一下,裸的最小割,就是点权需要拆点,每个点拆成对应的两个点,能堵住的点拆为两个点,连条边边权为对应的花费,不能堵的点,连边,边权为inf;

代码

#include
#include
#include
#include
#include
#define maxn 10005#define inf 0x3f3f3f3fusing namespace std;struct Edge{ int next; int to; int w;}edge[maxn];int cnt;int head[maxn];int cur[maxn];int depth[maxn];int Start,End,n,m,c;void add(int u,int v,int w){ edge[cnt].next=head[u];edge[cnt].w=w; edge[cnt].to=v;head[u]=cnt++; edge[cnt].next=head[v];edge[cnt].w=0; edge[cnt].to=u;head[v]=cnt++;}bool bfs(){ memset(depth,0,sizeof(depth)); depth[Start]=1; queue
que;que.push(Start); while(!que.empty()) { int u=que.front();que.pop(); for(int i=head[u];i!=-1;i=edge[i].next) { int v=edge[i].to; if(!depth[v]&&edge[i].w>0) { depth[v]=depth[u]+1;que.push(v); } } } return depth[End];}int dfs(int u,int maxflow){ int tempflow; if(u==End) return maxflow; int add=0; for(int &i=cur[u];i!=-1;i=edge[i].next) { int v=edge[i].to; if(depth[v]==depth[u]+1&&edge[i].w>0&&(tempflow=dfs(v,min(maxflow-add,edge[i].w)))) { edge[i].w-=tempflow; edge[i^1].w+=tempflow; add+=tempflow; if(maxflow==add) break; } } return add;}int dinic(){ int ans=0; while(bfs()) { for(int i=0;i<=2*(n*m)+1000;i++) cur[i]=head[i]; while(int temp=dfs(Start,inf)) ans+=temp; } return ans;}int dx[]={ 1,-1,0,0};int dy[]={ 0,0,1,-1};int main(){ char gra[50][50]; memset(head,-1,sizeof(head));cnt=0; int a[30];int flag=0; scanf("%d%d%d",&m,&n,&c); Start=2*(n*m)+100;End=Start+1; for(int i=0;i
=n||tx<0||ty>=m||ty<0) add(tmp+n*m,End,inf); else add(tmp+n*m,(tx*m+ty),inf); } if(gra[i][j]=='B') add(Start,tmp,inf); } } int ans=dinic(); if(ans>=inf) cout<<"-1\n"; else cout<
<

 

转载于:https://www.cnblogs.com/huangdao/p/10808447.html

你可能感兴趣的文章
手机端web开发必备代码
查看>>
[SDOI2008]洞穴勘测
查看>>
NOI2014 购票
查看>>
i am back
查看>>
Textbox search autocompalety
查看>>
Android 学习笔记
查看>>
武道之路-炼体期四重天
查看>>
bat删除指令
查看>>
Nginx作为静态资源web服务之防盗链
查看>>
Vue组件开发实践之scopedSlot的传递
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
加强树状数组luogu3368
查看>>
hdu4719 Oh My Holy FFF 线段树优化dp
查看>>
python处理excel文件(xls和xlsx)
查看>>
SPOJ TRAFFICN - Traffic Network
查看>>
(面试)写出下面switch语句的输出结果
查看>>
计算机中的“透明”
查看>>
haproxy报错解决
查看>>
nginx反向代理本地 单台wed -使用域名代理
查看>>
CSS
查看>>