最小费用最大流 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的弱化版本吧..建图的关键在于: 把行.列看 ...
随机推荐
- 关于Ctime库
--------------------- 本文来自 Fuko_Ibuki 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_31908675/article/de ...
- 4.python字符串格式化
格式化字符串时,Python使用一个字符串作为模板.模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式.Python用一个tuple将多个值传递给模板,每个值对应一个格式符.py ...
- some working learning总结学习(二)
2. 读取excel上的测试用例和结果,成json格式,最终存到access数据库 结果如下: { : { 'Req_ID': 'Fqqqqq/qqqqq', 'Case_ID': 'ATC_LvPw ...
- Go Example--panic
package main import "os" func main() { //panic会中断程序执行,在此处一直往上抛panic,需要上游的recover来捕获 panic( ...
- Qt5 中文乱码问题
在做gui界面时,使用QTdesigner设计时,控件的名称等输入中文没有问题.为了更加灵活点,直接使用代码进行布局就很有必要了.这样就会出现中文的乱码.为了解决乱码,查看资料说时修改文件保存的编码, ...
- JAVA工程师面试题库
这些都是从其他地方copy过来的,如有侵权的话,可以联系我下架.这期只有问题,后面我会整理答案再重新发出来. http://blog.csdn.net/jackfrued/article/detail ...
- GanttProject 项目管理软件的优点
GanttProject 的优点 GanttProject 是一款基于 GPL 协议的开源软件,代码完全开源,使用的是 Java 语言编写. 最近在试用,有以下一些优大. 文件格式为 xml,这个是我 ...
- 原生JS怎样给div添加链接
html: <div href="http://www.atigege.com" target="_blank">个人网站</div> ...
- 写了个自动生成vcxproj的程序
背景: 公司的vcxproj有个模板,必须要遵守 程序测试 config = { { ProjName = 'my_exe', ClCompile = {'main.cpp', 'main2.cpp' ...
- 测试网站nginx是否支持tls1.2的命令行
[root@~]# nmap --script ssl-enum-ciphers -p 443 www.想休息.cn Starting Nmap 5.51 ( http://nmap.org ) at ...