Kaka's Matrix Travels
http://poj.org/problem?id=3422
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
using namespace std;
const int INF = <<;
const int N=;
int Map[][],dis[N];
int head[N],pre[N];
bool vis[N];
int cnt = ;
int ans = ;
int n;
struct node
{
int u,v,c,f;
int next; } edge[N];
void add(int u,int v,int c,int f)
{
edge[cnt].u = u;
edge[cnt].v = v;
edge[cnt].c = c;
edge[cnt].f = f;
edge[cnt].next = head[u];
head[u] = cnt++;
edge[cnt].u = v;
edge[cnt].v = u;
edge[cnt].c = -c;
edge[cnt].f = ;
edge[cnt].next = head[v];
head[v] = cnt++;
}
int spfa()
{
for (int i = ; i <= n*n*+; i++)
{
dis[i] = INF;
pre[i] = -;
vis[i] = false;
}
dis[n*n*] = ;
queue<int>q;
q.push(n*n*);
vis[n*n*] = true;
while(!q.empty())
{
int u = q.front();
vis[u] = false;
q.pop();
for (int j = head[u]; j!=-; j=edge[j].next)
{
if (edge[j].f > &&dis[edge[j].v] > dis[u]+ edge[j].c)
{
pre[edge[j].v] = j;
dis[edge[j].v] = dis[u]+ edge[j].c;
if (!vis[edge[j].v])
{
q.push(edge[j].v);
vis[edge[j].v] = true;
}
}
}
}
if (pre[n*n*+]==-)
return ;
return ;
}
void MCMF()
{
while(spfa())
{
int Minflow = INF;
int j = pre[n*n*+];
while(j!=-)
{
Minflow = min(Minflow,edge[j].f);
j = pre[edge[j].u];
}
j = pre[n*n*+];
while(j!=-)
{
edge[j].f-=Minflow;
edge[j^].f+=Minflow;
ans+=Minflow*edge[j].c;
j = pre[edge[j].u];
}
}
}
int main()
{
int k;
scanf("%d%d",&n,&k);
memset(Map,,sizeof(Map));
memset(head,-,sizeof(head));
for (int i = ; i <= n; i++)
{
for (int j = ; j <= n; j++)
{
scanf("%d",&Map[i][j]);
}
}
for (int i = ; i <= n; i++)//拆点
{
for (int j = ; j <= n; j++)
{
int u = (i-)*n+j-;
add(*u,*u+,-Map[i][j],);//加边
add(*u,*u+,,k-);
}
}
for (int i = ; i <= n; i++)//向右加边
{
for (int j = ; j < n; j++)
{
int u = (i-)*n+j-;
add(*u+,(u+)*,,k);
}
}
for (int i = ; i < n; i++)//向下加边
{
for (int j = ; j <= n; j++)
{
int u = (i-)*n+j-;
add(*u+,(u+n)*,,k);
}
}
add(n*n*,,,k);//加源点
add(n*n*-,n*n*+,,k);//加终点
MCMF();
printf("%d\n",-ans);
return ;
}
Kaka's Matrix Travels的更多相关文章
- POJ 3422 Kaka's Matrix Travels
Kaka's Matrix Travels Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9567 Accepted: ...
- POJ3422 Kaka's Matrix Travels[费用流]
Kaka's Matrix Travels Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9522 Accepted: ...
- poj3422 Kaka's Matrix Travels(最小费用最大流问题)
/* poj3422 Kaka's Matrix Travels 不知道 k次 dp做为什么不对??? 看了大牛的代码,才知道还可以这样做! 开始没有理解将a 和 a‘ 之间建立怎样的两条边,导致程序 ...
- POJ3422 Kaka's Matrix Travels 【费用流】*
POJ3422 Kaka's Matrix Travels Description On an N × N chessboard with a non-negative number in each ...
- POJ 3422 Kaka's Matrix Travels(费用流)
Kaka's Matrix Travels Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6792 Accepted: ...
- POJ3422 Kaka's Matrix Travels
描述 On an N × N chessboard with a non-negative number in each grid, Kaka starts his matrix travels wi ...
- 【poj3422】 Kaka's Matrix Travels
http://poj.org/problem?id=3422 (题目链接) 题意 N*N的方格,每个格子中有一个数,寻找从(1,1)走到(N,N)的K条路径,使得取到的数的和最大. Solution ...
- POJ 3422 Kaka's Matrix Travels 【最小费用最大流】
题意: 卡卡有一个矩阵,从左上角走到右下角,卡卡每次只能向右或者向下.矩阵里边都是不超过1000的正整数,卡卡走过的元素会变成0,问卡卡可以走k次,问卡卡最多能积累多少和. 思路: 最小费用最大流的题 ...
- POJ 3422 Kaka's Matrix Travels (K取方格数:最大费用流)
题意 给出一个n*n大小的矩阵,要求从左上角走到右下角,每次只能向下走或者向右走并取数,某位置取过数之后就只为数值0,现在求解从左上角到右下角走K次的最大值. 思路 经典的费用流模型:K取方格数. 构 ...
- POJ 3422 Kaka's Matrix Travels K取方格数
题目:给出n*n的方格矩阵,现在从左上方走m次到右下方,问m次能够获得的最大价值和. 分析:最大费用流.拆点进行限制每个格子只取一次,假设点x拆成 x,xx,右边(假设有)y,yy,下方(假设有)z, ...
随机推荐
- jQuey中的return false作用是什么?
jQuey中的return false作用是什么?在众多的语句中都有return false的使用,当然对于熟悉它的开发者来说,当然是知根知底,知道此语句的作用,当然也就知道在什么时候使用此语句,不过 ...
- 洛谷——P3018 [USACO11MAR]树装饰Tree Decoration
P3018 [USACO11MAR]树装饰Tree Decoration 比较水的一道树上模拟水题,更新每个点的价值为以这个点为根的子树中的价值最小值,同时更新以每个节点为根的$sum$值,即以这个节 ...
- 洛谷——P2171 Hz吐泡泡
P2171 Hz吐泡泡 题目描述 这天,Hz大大心血来潮,吐了n个不同的泡泡玩(保证没有重复的泡泡).因为他还要写作业,所以他请你帮他把这些泡泡排序成树(左子树<=根<右子树).输出它的后 ...
- 面试总结——Java高级工程师(二)
一.Java底层基础题 1.SpringMVC的原理以及返回数据如何渲染到jsp/html上? 答:Spring MVC的核心就是 DispatcherServlet , 一个请求经过 Dispatc ...
- 每日命令:(11)nl
nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...
- python3.x Day3 集合
python中的集合 集合定义:一个无序的去重的数据集,主要特性就是去重和关系测试,关系测试不改变集合中的数据值 定义集合:set(list) 可以将list转化为集合set 示例: 定义一个集合:l ...
- [ural1057][Amount of Degrees] (数位dp+进制模型)
Discription Create a code to determine the amount of integers, lying in the set [X; Y] and being a s ...
- Unity对象的所有组件深拷贝与粘贴
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51454847 作者:car ...
- 九度oj 题目1066:字符串排序
题目1066:字符串排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6487 解决:2670 题目描述: 输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到 ...
- PLSQL 下载地址 Spring jar包
PLSQL https://www.allroundautomations.com/ instantclient http://www.oracle.com/technetwork/topic ...