最小费用最大流 HDU1533
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1533
#include<bits/stdc++.h>
#define fi first
#define se second
#define INF 0x3f3f3f3f
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pqueue priority_queue
#define NEW(a,b) memset(a,b,sizeof(a))
const double pi=4.0*atan(1.0);
const double e=exp(1.0);
const int maxn=1e6+;
typedef long long LL;
typedef unsigned long long ULL;
const LL mod=1e9+;
const ULL base=1e7+;
using namespace std;
struct edge{
int to,nxt,flow,cost;
}g[maxn];
int head[],pre[],dis[],cnt,s,t,tot;
int a[][];
bool vis[];
char ss[];
void add(int x,int y,int cost,int flow){
g[cnt].to=y;
g[cnt].nxt=head[x];
g[cnt].cost=cost;
g[cnt].flow=flow;
head[x]=cnt++;
}
bool spfa(){
memset(pre,-,sizeof(pre));
memset(dis,INF,sizeof(dis));
memset(vis,,sizeof(vis));
queue<int> que;
while(!que.empty()){que.pop();}
que.push(s);
dis[s]=;
vis[s]=;
while(!que.empty()){
int k=que.front();
que.pop();
vis[k]=;
int tt=head[k];
while(tt!=-){
if(dis[g[tt].to]>dis[k]+g[tt].cost&&g[tt].flow>){
pre[g[tt].to]=tt;
dis[g[tt].to]=dis[k]+g[tt].cost;
if(vis[g[tt].to]==){
que.push(g[tt].to);
vis[g[tt].to]=;
}
}
tt=g[tt].nxt;
}
}
return pre[t]!=-;
}
int maxflow(){
int ans=;
while(spfa()){
int f=INF;
for(int i=pre[t];i!=-;i=pre[g[i^].to]){
if(g[i].flow<f)
f=g[i].flow;
}
for(int i=pre[t];i!=-;i=pre[g[i^].to]){
g[i].flow-=f;
g[i^].flow+=f;
ans+=g[i].cost*f;
}
}
return ans;
}
int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF&&n&&m){
memset(head,-,sizeof(head));
cnt=tot=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
a[i][j]=tot++;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(j!=m){
add(a[i][j],a[i][j+],,INF);
add(a[i][j+],a[i][j],-,);
add(a[i][j+],a[i][j],,INF);
add(a[i][j],a[i][j+],-,);
}
if(i!=n){
add(a[i][j],a[i+][j],,INF);
add(a[i+][j],a[i][j],-,);
add(a[i+][j],a[i][j],,INF);
add(a[i][j],a[i+][j],-,);
}
}
}
s=tot++;
t=tot++;
for(int i=;i<=n;i++){
scanf("%s",ss);
for(int j=;j<m;j++){
if(ss[j]=='H'){
add(a[i][j+],t,,);
add(t,a[i][j+],,);
}
if(ss[j]=='m'){
add(s,a[i][j+],,);
add(a[i][j+],s,,);
}
}
}
printf("%d\n",maxflow());
}
}
最小费用最大流 HDU1533的更多相关文章
- hdu1533 Going Home 最小费用最大流 构造源点和汇点
Going Home Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- [hdu1533]二分图最大权匹配 || 最小费用最大流
题意:给一个n*m的地图,'m'表示人,'H'表示房子,求所有人都回到房子所走的距离之和的最小值(距离为曼哈顿距离). 思路:比较明显的二分图最大权匹配模型,将每个人向房子连一条边,边权为曼哈顿距离的 ...
- [板子]最小费用最大流(Dijkstra增广)
最小费用最大流板子,没有压行.利用重标号让边权非负,用Dijkstra进行增广,在理论和实际上都比SPFA增广快得多.教程略去.转载请随意. #include <cstdio> #incl ...
- bzoj1927最小费用最大流
其实本来打算做最小费用最大流的题目前先来点模板题的,,,结果看到这道题二话不说(之前打太多了)敲了一个dinic,快写完了发现不对 我当时就这表情→ =_=你TM逗我 刚要删突然感觉dinic的模 ...
- ACM/ICPC 之 卡卡的矩阵旅行-最小费用最大流(可做模板)(POJ3422)
将每个点拆分成原点A与伪点B,A->B有两条单向路(邻接表实现时需要建立一条反向的空边,并保证环路费用和为0),一条残留容量为1,费用为本身的负值(便于计算最短路),另一条残留容量+∞,费用为0 ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- P3381 【模板】最小费用最大流
P3381 [模板]最小费用最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行 ...
- 【BZOJ-3876】支线剧情 有上下界的网络流(有下界有源有汇最小费用最大流)
3876: [Ahoi2014]支线剧情 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 821 Solved: 502[Submit][Status ...
- hdu 4411 2012杭州赛区网络赛 最小费用最大流 ***
题意: 有 n+1 个城市编号 0..n,有 m 条无向边,在 0 城市有个警察总部,最多可以派出 k 个逮捕队伍,在1..n 每个城市有一个犯罪团伙, 每个逮捕队伍在每个城市可以选 ...
- UVa11082 Matrix Decompressing(最小费用最大流)
题目大概有一个n*m的矩阵,已知各行所有数的和的前缀和和各列所有数的和的前缀和,且矩阵各个数都在1到20的范围内,求该矩阵的一个可能的情况. POJ2396的弱化版本吧..建图的关键在于: 把行.列看 ...
随机推荐
- 【转】Spring-boot 字符集设置 解决乱码方案
使用spring-boot开发时候,有时候程序没事,往往不经意会造成中文到前端变成乱码(????这样情况) 下面给出spring-boot项目统一字符集设置方案: 1.Spring Boot修改编码方 ...
- Python全栈之路----常用数据类型--集合
集合(set):无序的,不重复的数据组合,它的主要作用如下: · 去重,把一个列表变成集合,就自动去重了 · 关系测试,测试两组数据之间的交集.差集.并集等关系 1.基本操作:修改,删除,合并 & ...
- Vue.js学习使用心得(四)——组件
一.组件 组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界 ...
- 【SpringBoot】Logback日志框架介绍和SpringBoot整合实战
========================11.Logback日志框架介绍和SpringBoot整合实战 2节课================================ 1.新日志框架L ...
- PythonStudy——PyCharm 选择性忽略PEP8代码风格警告信息
用了几天的PyCharm,发现确实在编写Python代码上非常好用,但有一点体验不太好,就是代码编写时要按照PEP8代码风格编写,不然会有波浪线的警告信息.解决方法如下: 方法一:将鼠标移到提示的地方 ...
- 统一社会信用代码+组织机构代码 校验 python
转自: https://blog.csdn.net/warrah/article/details/69338912 https://blog.csdn.net/qq_37142340/article/ ...
- centos7.1安装tomcat8
上传软件包 [root@linux-node1 tools]# ls apache-tomcat-8.0.32.tar.gz jdk-8u74-linux-x64.tar.gz 添加普通用户tomca ...
- Windows下好用的git客户端--GitExtentions
用git: https://git-scm.com/downloads GitExtentions: https://sourceforge.net/projects/gitextensions/ B ...
- dapper List SqlBulkCopy
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- python configparser使用
.ini文件由若干section(部分)组成, 而每一个section又由若干键值对组成. 以 example.ini为例: [DEFAULT] ServerAliveInterval = 45 Co ...