http://poj.org/problem?id=2195

题意是:有相同数量的人与房子,每一时刻人都可以花费1$的钱走一步,问让每个人到达一个屋子的最少需要的费用。

建立源点与汇点,求有源点到汇点的最小费用最大流;改了一下不需要f[][]的模板。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <cstdlib>
#define maxn 207
using namespace std;const int inf = 999999999;struct node
{int x,y;
}p[maxn],h[maxn];
int c[maxn][maxn],f[maxn][maxn],w[maxn][maxn];
int pre[maxn],dis[maxn];
int n,m,pn,hn,s,t;
char str[maxn][maxn];
bool inq[maxn];
int ans;int Abs(int x)
{return x > 0 ? x : -x;
}
void spfa()
{int v;queue<int>q;for (int i = 0; i < maxn; ++i){dis[i] = inf; pre[i] = -1;inq[i] = false;}q.push(s); inq[s] = true; dis[s] = 0;while (!q.empty()){int u = q.front(); q.pop();inq[u] = false;for (v = 0; v <= t; ++v){if (c[u][v]&& dis[v] > dis[u] + w[u][v]){dis[v] = dis[u] + w[u][v];pre[v] = u;if (!inq[v]){q.push(v);inq[v] = true;}}}}
}
void mcmf()
{while (1){spfa();if (pre[t] == -1) break;int x = t,minf = inf;while (pre[x] != -1){minf = min(minf,c[pre[x]][x]);x = pre[x];}x = t;while (pre[x] != -1){c[pre[x]][x] -= minf;c[x][pre[x]] += minf;ans += minf*w[pre[x]][x];x = pre[x];}}
}
int main()
{//freopen("in.txt","r",stdin);int i,j,pn,hn;while (~scanf("%d%d",&n,&m)){if (!n && !m) break;pn = hn = 0;for (i = 0; i < n; ++i){scanf("%s",str[i]);for (j = 0; j < m; ++j){if (str[i][j] == 'H'){h[++hn].x = i; h[hn].y = j;}else if (str[i][j] == 'm'){p[++pn].x = i; p[pn].y = j;}}}memset(c,0,sizeof(c));memset(f,0,sizeof(f));memset(w,0,sizeof(w));s = 0; t = pn + hn + 1;for (i = 1; i <= pn; ++i) c[s][i] = 1;for (i = 1; i <= hn; ++i) c[i + pn][t] = 1;for (i = 1; i <= pn; ++i){for (j = 1; j <= hn; ++j){c[i][j + pn] = 1;w[i][j + pn] = Abs(p[i].x - h[j].x) + Abs(p[i].y - h[j].y);w[j + pn][i] = -w[i][j + pn];}}ans = 0;mcmf();printf("%d\n",ans);}return 0;
}

  

pku 2195 Going Home 最小费最大流问题相关推荐

  1. pku 2195 Going Home KM最小权匹配问题

    http://poj.org/problem?id=2195 在一个n*m的方格里有nx人(m)和ny个房子(H),(nx = ny)人每次可以向四周移动单位距离,花费1¥,求最小花费是每个人都能进入 ...

  2. poj pku图论、网络流入门题总结、汇总

    poj pku图论.网络流入门题总结.汇总 分类: acm图论 2010-08-25 18:49 243人阅读 评论(0) 收藏 举报 网络算法networkgraphconstructioninte ...

  3. pku,zju题目分类

    哎呦喂,直接ctrl+A了.话说浙江大学的题还见过的呢.. 公告: [意见反馈][官方博客]   ural pku Zju 题目分类 收藏   感谢 mugu 的提供.... Ural Problem ...

  4. hdu 1043 ,pku 1077 Eight ,八数码问题

    某位神牛曾说过,此题是涉及到人生完不完整的一道题.. Goodness大牛曾总结了 八数码的八重境界 : http://www.cnblogs.com/goodness/archive/2010/05 ...

  5. pku 3436 ACM Computer Factory ——最大流 EK

    http://poj.org/problem?id=3436 题意好难懂,有n个工厂加工电脑半成品,半成品电脑需要p个部件. 输入p(需要的部件数) n(工厂数) Qi  (工厂最大生产量)  Si, ...

  6. Follow My Logic 1048 PKU

    Follow My Logic http://acm.pku.edu.cn/JudgeOnline/problem?id=1048 确定由一个或多个输入.0个或多个与或门组成的逻辑电路 电路路径通过水 ...

  7. Java黑皮书课后题第2章:2.5(金融应用:计算小费)编写一个程序,读入一笔费用与小费利率,计算小费和总钱数

    2.5(金融应用:计算小费)编写一个程序,读入一笔费用与消费利率,计算小费和总钱数 题目 题目概述 举例与运行示例 破题 代码块 方法评价 修改日志 题目 题目概述 2.5(金融应用:计算小费)编写一 ...

  8. POJ 2195 Going Home / HDU 1533(最小费用最大流模板)

    题目大意: 有一个最大是100 * 100 的网格图,上面有 s 个 房子和人,人每移动一个格子花费1的代价,求最小代价让所有的人都进入一个房子.每个房子只能进入一个人. 算法讨论: 注意是KM 和 ...

  9. 图论--网络流最大流问题

    问题表述:给定一幅图(n个结点,m条边),每一条边有一个容量,现在需要将一些物品从结点s(称为源点)运送到结点t(称为汇点),可以从其他结点中转,求最大的运送量. 在介绍最大流问题的解决方法之前,先介 ...

最新文章

  1. foundation of the academics
  2. php 比较数组的不同的值,php array_udiff 比较两个数组的键值,并返回差集
  3. 【若依(ruoyi)】启动时,卡死在:Using existing EHCache named [loginRecordCache]
  4. 【Linux】vim简单配置
  5. java instanceof运算符_Java instanceof 运算符的使用方法
  6. float型y取值在1.0c语言表达式,2011年全国计算机二级C语言模拟试题及答案(14)...
  7. React开发(115):子组件无法处理复杂的数据格式
  8. 花园体育馆计算机房音乐教室的英语,新版PEP小学英语四年级下册期中复习资料1-3单元...
  9. java左移负数位_java的左移运算符和右移运算符
  10. linux落字效果代码,Linux 用echo输出带特效的字体
  11. 安装使用FLTK图形库
  12. Linux实验报告一【 下载配置搜狗安装包16.04】
  13. delphi中webbrowser的用法
  14. Xcode Message from debugger: Terminated due to memory issue
  15. 企业微信登陆,操作企业微信通讯录(代码已上传github)
  16. microsoft edge 浏览器添加兼容网址
  17. Linux系统设置共享命令,Linux 基本命令操作 (文件共享) 一
  18. PSO粒子群算法微电网优化调度(微电网孤岛运行优化调度)matlab程序
  19. GraphQL(win10环境 + nodejs)试用
  20. VR系列——Oculus Rift 开发者指南:二、初始化和传感器枚举

热门文章

  1. linux rpm 包制作详解
  2. 掌握11项技能,你就是优秀的前端开发工程师
  3. PhpCms V9调用指定栏目子栏目文章的两种方法
  4. Unity3D正常行走和飞行的实现
  5. IE6使用png透明图片的方法
  6. 用一句SQL取出第 m 条到第 n 条记录的方法
  7. 这封信里面,藏了300万数字货币
  8. 神吐槽|产品经理都是如何相爱相撕的?
  9. 深圳 | PMCAFF 产品经理第一课,面向3-5年产品经理,全面提升产品战略能力
  10. PMcaff大讲堂:竞品分析项目管理课程总结分享