#include<stdio.h>
#include<queue>
#include<string.h>
using namespace std;
#define inf 0x7fffffff
struct node{
int
u,v,w,f,next;
}
bian[20000];
int
dis[6000],pre[6000],head[6000],visit[6000],yong,minf;
void
build(int u,int v,int w,int f) {
bian[yong].u=u;
bian[yong].v=v;
bian[yong].w=w;
bian[yong].f=f;
bian[yong].next=head[u];
head[u]=yong++;
}
void
adde(int u,int v,int w,int f) {
build(u,v,w,f);
build(v,u,-w,0);
}
int
spfa(int s,int t) {
memset(visit,0,sizeof(visit));
memset(pre,-1,sizeof(pre));
for(int
i=0;i<=t;i++)//注意是从0开始而不是从s开始
dis[i]=inf;
queue<int>q;
visit[s]=1;//必须是s
q.push(s);
dis[s]=0;
while(!
q.empty ()) {
int
u=q.front ();
for(int
index=head[u];index!=-1;index=bian[index].next) {
int
v=bian[index].v;
if(
bian[index].f&&dis[v]>dis[u]+bian[index].w) {
dis[v]=dis[u]+bian[index].w;
pre[v]=index;
if(!
visit[v]) {
visit[v]=1;
q.push (v);
}
}
}

q.pop();
visit[u]=0;//是u
}
if(
dis[t]==inf)
return
0;
return
1;
}
void
addf(int s,int t ) {
int
i=pre[t];
int
j;
while(
i!=-1) {
j=i^1;
bian[i].f--;
bian[j].f++;
minf+=bian[i].w;
i=pre[bian[i].u];//前一个u
}
}
int main() {
int
n,k,map[60][60];
while(
scanf("%d",&n)!=EOF) {
memset(head,-1,sizeof(head));
k=2;
yong=0;
int
s=2*n*n;
int
t=s+1;
int
i,j;
for(
i=0;i<n;i++)
for(
j=0;j<n;j++)
scanf("%d",&map[i][j]);
for(
i=0;i<n;i++)
for(
j=0;j<n;j++) {
int
b=i*n+j;
adde(2*b,2*b+1,-map[i][j],1);
adde(2*b,2*b+1,0,k-1);
}
for(
i=0;i<n;i++)
for(
j=0;j<n-1;j++) {
int
b=i*n+j;
adde(2*b+1,2*(b+1),0,k);
}
for(
i=0;i<n-1;i++)
for(
j=0;j<n;j++) {
int
b=i*n+j;
adde(2*b+1,2*(b+n),0,k);
}

adde(s,0,0,k);
adde(2*n*n-1,t,0,k);
minf=0;
while(
spfa(s,t)) {
addf(s,t);
}

printf("%d\n",-minf);
}
return
0;
}

hdu 2686最小费用最大流问题的更多相关文章

  1. HDU 1533 最小费用最大流(模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1533 这道题直接用了模板 题意:要构建一个二分图,家对应人,连线的权值就是最短距离,求最小费用 要注意void ...

  2. poj3422 Kaka's Matrix Travels(最小费用最大流问题)

    /* poj3422 Kaka's Matrix Travels 不知道 k次 dp做为什么不对??? 看了大牛的代码,才知道还可以这样做! 开始没有理解将a 和 a‘ 之间建立怎样的两条边,导致程序 ...

  3. 【网络流#2】hdu 1533 - 最小费用最大流模板题

    最小费用最大流,即MCMF(Minimum Cost Maximum Flow)问题 嗯~第一次写费用流题... 这道就是费用流的模板题,找不到更裸的题了 建图:每个m(Man)作为源点,每个H(Ho ...

  4. 算法笔记_140:最小费用最大流问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 在最大流有多组解时,给每条边在附上一个单位费用的量,问在满足最大流时的最小费用是多少? 2 解决方案 下面代码所使用的测试数据如下图: 具体代码如下 ...

  5. hdu 3667(最小费用最大流+拆边)

    Transportation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. hdu 1533(最小费用最大流)

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  7. hdu 4862KM&最小费用最大流

    /*最小K路径覆盖的模型,用费用流或者KM算法解决, 构造二部图,X部有N*M个节点,源点向X部每个节点连一条边, 流量1,费用0,Y部有N*M个节点,每个节点向汇点连一条边,流量1, 费用0,如果X ...

  8. hdu 6437 /// 最小费用最大流 负花费 SPFA模板

    题目大意: 给定n,m,K,W 表示n个小时 m场电影(分为类型A.B) K个人 若某个人连续看了两场相同类型的电影则失去W 电影时间不能重叠 接下来给定m场电影的 s t w op 表示电影的 开始 ...

  9. Java实现最小费用最大流问题

    1 问题描述 在最大流有多组解时,给每条边在附上一个单位费用的量,问在满足最大流时的最小费用是多少? 2 解决方案 下面代码所使用的测试数据如下图: package com.liuzhen.pract ...

随机推荐

  1. 【转】在 26 岁时写给 18 岁的自己--Livid

    原文:http://livid.v2ex.com/essays/2012/01/24/a-letter-from-26-to-18/ 我知道现在的自己是再也回不去的了.可是倘若有机会,我是多么希望能让 ...

  2. Ionic之增加样式会自动换行解决方案

    设置样式的时候,引用自身的样式,能正常显示,但是引用自定义样式显示的时候,竟然或自动换行,好尴尬. 原本代码: $('.codeSuccess').css({'display':'block'}); ...

  3. 【学习笔记】深入理解js原型和闭包(0)——目录

    文章转载:https://www.cnblogs.com/wangfupeng1988/p/4001284.html 说明: 本篇文章一共16篇章,外加两篇后补的和一篇自己后来添加的学习笔记,一共19 ...

  4. calc() 计算CSS属性值

    calc()是css3的一个新增的功能,用来指定元素的长度.比如说,你可以使用calc()给元素的border.margin.pading.font-size和width等属性设置动态值.calc() ...

  5. ios 从相册视频中获取视频截图

    //给image添加个分类 +(UIImage *)getImage:(NSURL: *)videoURL { AVURLAsset *asset = [[AVURLAsset alloc] init ...

  6. JQuery日期选择器插件date-input

    JQuery日期选择器插件之date-input 官方网站:http://jonathanleighton.com/projects/date-input/ 下载地址: http://github.c ...

  7. [Tunny]Git常用命令与入门

    [黄映焜/Tunny,20140709] Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制..g ...

  8. 用JS获取Html中所有图片文件流然后替换原有链接

    function displayHtmlWithImageStream(bodyHtml) { var imgReg = /<img.*?(?:>|\/>)/gi; var arr ...

  9. Vue 组件 data为什么是函数

    在创建或注册模板的时候,传入一个data属性作为用来绑定的数据.但是在组件中,data必须是一个函数,而不能直接把一个对象赋值给它. Vue.component('my-component', { t ...

  10. 如何理解Python中的if __name__ == '__main__'

    1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...