Cops And Roobers
题目链接:Cops And Roobers
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int inf=0x3f3f3f3f;
const int N=2e3+10,M=1e6+10;
const int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int n,m,c,h[N],s,t,val[N],base; char g[50][50];
int head[N],nex[M],to[M],w[M],tot=1;
inline void ade(int a,int b,int c){to[++tot]=b; nex[tot]=head[a]; w[tot]=c; head[a]=tot;
}
inline void add(int a,int b,int c){ade(a,b,c); ade(b,a,0);}
inline int bfs(){queue<int> q; q.push(s); memset(h,0,sizeof h); h[s]=1;while(q.size()){int u=q.front(); q.pop();for(int i=head[u];i;i=nex[i]){if(w[i]&&!h[to[i]]){h[to[i]]=h[u]+1; q.push(to[i]);}}}return h[t];
}
int dfs(int x,int f){if(x==t) return f; int fl=0;for(int i=head[x];i&&f;i=nex[i]){if(w[i]&&h[to[i]]==h[x]+1){int mi=dfs(to[i],min(w[i],f));w[i]-=mi,w[i^1]+=mi,fl+=mi,f-=mi;}}if(!fl) h[x]=-1;return fl;
}
inline int dinic(){int res=0;while(bfs()) res+=dfs(s,inf);return res;
}
inline int id(int x,int y){return (x-1)*m+y;}
signed main(){cin>>m>>n>>c; base=n*m; t=base*2+1;for(int i=1;i<=n;i++) scanf("%s",g[i]+1);for(int i=1;i<=c;i++) scanf("%d",&val[i]);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int k=0;k<4;k++){int tx=i+dx[k],ty=j+dy[k];if(tx<1||ty<1||tx>n||ty>m) add(id(i,j)+base,t,inf);else add(id(i,j)+base,id(tx,ty),inf);}if(g[i][j]=='.') add(id(i,j),id(i,j)+base,inf);else if(g[i][j]=='B') add(s,id(i,j)+base,inf);else add(id(i,j),id(i,j)+base,val[g[i][j]-'a'+1]);}}int flow=dinic();if(flow==inf) puts("-1");else cout<<flow;return 0;
}
Cops And Roobers相关推荐
- 【最小割】Gym - 101982 - E - Cops And Roobers
题目链接<http://codeforces.com/gym/240837> 题意: 给你一张地图,里面有一个小偷.要求建造一些围栏把小偷圈住,有些地方不可造围栏,有些地方可造,但代价不同 ...
- Gradle 命令行介紹和安裝教程
Gradle 命令行 $ gradle -hUSAGE: gradle [option...] [task...]-?, -h, --help Shows this help message. -a, ...
- AT命令交互之-COPS选择营运商
模块默认一般都可以自动搜网注册,比如移动的就注册到移动,联通的就注册到联通.但是在不同的国家多网覆盖的使用情况下,有时候就算使用了自动搜网注册网络,也会出现注册不上网络的现象,这时候就需要使用手动搜网 ...
- 4-AT命令交互之-COPS选择营运商
模块默认一般都可以自动搜网注册,比如移动的就注册到移动,联通的就注册到联通.但是在不同的国家多网覆盖的使用情况下,有时候就算使用了自动搜网注册网络,也会出现注册不上网络的现象,这时候就需要使用手动搜网 ...
- 分布式系统因果一致性与COPS算法
COPS是保序系统的集群(Clusters of Order Preserving System)的简称.在了解COPS之前,最好首先了解一下分布式系统CAC算法,从CAP-->CAC--> ...
- modem 指令:AT+COPS
modem 每天学一个指令: AT+COPS 功能:用于选择运营网络.主要有2种选择方式: 1.手工模式(manual): 搜索应用程序指定的网络.如果成功,则进行注册. 2.自动模式(automat ...
- uva 361 - Cops and Robbers(凸包)
题目中给出了n个cops和m个robbers和q个居民,如果一个居民在某三个cops围成的三角形中就是安全的,否则,如果在某三个robbers围成的三角形中,就是不安全的,不然就是neither. 思 ...
- UVA 361 Cops and Robbers(凸包应用)
UVA 361 Cops and Robbers(凸包应用) http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...
- 笔记 MIT6.824 Lecture 17: COPS, Causal Consistency
目录 前言 一.geo-replication 1.1 Spanner 1.2 Memchche 1.3 新的需求 二.预备方案One 三.预备方案Two 四.COPS 五.limitations 总 ...
最新文章
- Alpha多样性稀释曲线rarefraction curve还不会画吗?快看此文
- R语言layout函数处理可视化图像布局实战
- vue.js学习笔记(1)
- 模拟四:STEMA 考试选择题模拟练习试卷(中级组)及答案 + 自我解题笔记
- ios15使用NSXMLParser解析XML
- Java 11:将集合转换为数组
- 微信小程序获取当前时间戳、获取当前时间、时间戳加减
- 微软研发致胜策略读书笔记(转)
- 信息学奥赛一本通 1322:【例6.4】拦截导弹问题(Noip1999)
- cc java区别_cC和C++和java的问题有啥区别?
- 万向区块链与生态圈合作伙伴形成RISC-V国际区块链SIG
- 【Tensorlayer系列】深度强化学习之DQN求解FrozenLake
- InTouch软件介绍
- 一文教你高效画出技术架构图
- 老路《用得上的商学课》学习笔记(1-5课)
- 计算机软件著作权登记去哪查询,软件著作权在哪里查询
- codecademy
- 谭谭牛顿的牛眼之人眼是红外线成像仪谭
- input主动获取焦点
- 麦肯锡三部曲_越拼命工作,越不快乐?麦肯锡“提问式思维”帮你发现问题本质...