[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=1877

[算法]

不难看出,第一问要求的是最大流,第二问求的是最小费用最大流

注意建图时要将每个点拆成入点和出点,防止经过同一个地点多次

[代码]

#include<bits/stdc++.h>
using namespace std;
#define MAXN 1010
#define MAXM 40010
const int inf = 2e9; struct edge
{
int to,w,cost,nxt;
} e[MAXM << ]; int i,n,m,tot,a,b,c,S,T,ans1,ans2;
int pre[MAXN << ],dist[MAXN << ],incf[MAXN << ],head[MAXN << ]; template <typename T> inline void read(T &x)
{
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar())
{
if (c == '-') f = -f;
}
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline void addedge(int u,int v,int w,int cost)
{
tot++;
e[tot] = (edge){v,w,cost,head[u]};
head[u] = tot;
tot++;
e[tot] = (edge){u,,-cost,head[v]};
head[v] = tot;
} inline bool spfa()
{
int i,l,r,u,v,w,cost;
static int q[MAXN << ];
static bool inq[MAXN << ];
for (i = ; i <= * n; i++)
{
dist[i] = inf;
incf[i] = inf;
inq[i] = false;
}
q[l = r = ] = S;
inq[S] = true;
pre[S] = ;
dist[S] = ;
while (l <= r)
{
u = q[l];
l++;
inq[u] = false;
for (i = head[u]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
cost = e[i].cost;
if (w && dist[u] + cost < dist[v])
{
dist[v] = dist[u] + cost;
incf[v] = min(incf[u],w);
pre[v] = i;
if (!inq[v])
{
inq[v] = true;
q[++r] = v;
}
}
}
}
if (dist[T] != inf) return true;
else return false;
}
inline void update()
{
int pos,x = T;
while (x != S)
{
pos = pre[x];
e[pos].w -= incf[T];
e[pos ^ ].w += incf[T];
x = e[pos ^ ].to;
}
ans1 += incf[T];
ans2 += dist[T] * incf[T];
} int main()
{ read(n); read(m);
tot = ;
addedge(,n + ,inf,);
addedge(n, * n,inf,);
for (i = ; i < n; i++) addedge(i,i + n,,);
for (i = ; i <= m; i++)
{
read(a); read(b); read(c);
addedge(a + n,b,,c);
}
S = ; T = * n;
while (spfa()) update();
printf("%d %d\n",ans1,ans2); return ; }

[SDOI 2009] 晨跑的更多相关文章

  1. C++之路进阶——codevs2306(晨跑)

    2306 晨跑 2009年省队选拔赛山东  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master       题目描述 Description Elaxia最近迷恋 ...

  2. 1877: [SDOI2009]晨跑

    1877: [SDOI2009]晨跑 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2007  Solved: 1085[Submit][Status][ ...

  3. 晨跑(bzoj 1877)

    Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十 ...

  4. BZOJ-1877 晨跑 最小费用最大流+拆点

    其实我是不想做这种水题的QWQ,没办法,剧情需要 1877: [SDOI2009]晨跑 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 1704 Solve ...

  5. 【BZOJ】1877: [SDOI2009]晨跑(最小费用最大流)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1877 费用流做多了,此题就是一眼题. 拆点表示只能经过一次,容量为1,费用为0. 然后再连边即可,跑 ...

  6. BZOJ 1877: [SDOI2009]晨跑 费用流

    1877: [SDOI2009]晨跑 Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一 ...

  7. 【BZOJ】【1877】【SDOI2009】晨跑

    网络流/费用流 费用流入门题……根本就是模板题好吗! 拆点搞定度数限制,也就是每个点最多经过一次……源点汇点除外. /***************************************** ...

  8. bzoj1877: [SDOI2009]晨跑

    挺裸的最小费用最大流... #include<cstdio> #include<queue> #include<cstring> #include<iostr ...

  9. 【BZOJ 1877】 [SDOI2009]晨跑

    Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十 ...

随机推荐

  1. JavaScipt30(第十个案例)(主要知识点:选中一个数组中间相连部分进行操作的一种思路)

    承接上文,第九个案例就不说了,是控制台的一些东西,一般用的很少,了解下就行了,想用的时候再翻api.这是第10个案例: 需要实现的效果是:点击一个checkbox,然后按下shift点击另一个chec ...

  2. day02 Python完结

    一. 常用数据类型及内置法 1 列表 定义: 列表是Python中内置有序.可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开: 当列表元素增加或删除时,列表对象自动进行扩展或收缩内存 ...

  3. CF450B Jzzhu and Sequences(矩阵加速)

    CF450B Jzzhu and Sequences 大佬留言:这.这.不就是矩乘的模板吗,切掉它!! You are given xx and yy , please calculate $f_{n ...

  4. Win10中创建Hyper-V虚拟机

    Win10虚拟机创建方法方法 1 开始菜单->所有应用->Windows系统->控制面板,程序->启用或关闭Windows功能,勾选Hyper-V下所有选项 如果Hyper-V ...

  5. BZOJ 1832、1787 洛谷 4281 [AHOI2008]紧急集合

    [题解] 题目要求找到一个集合点,使3个给定的点到这个集合点的距离和最小,输出集合点的编号以及距离. 设三个点为A,B,C:那么我们可以得到Dis=dep[A]+dep[B]+dep[C]-dep[L ...

  6. tmux使用入门

    tmux是Linux中窗口管理程序,适用于终端复用,尤其适合远程连接.最近,我正苦闷与ssh自动超时退出和broken pipe,决定投入tmux怀抱. 使用tmux最直接的好处,便是可以在一个远程连 ...

  7. 转载 - C++ - 关于ifstream/fstream流 判断文件是否结束eof()的问题

    出处:http://blog.csdn.net/shuilan0066/article/details/4669451 在做实验的时候遇到这个问题,找原因的时候发现出处除了讲明原因,还举了例子,所以记 ...

  8. jquery ajax报Uncaught TypeError :Illegal invocation

    使用jquery ajax异步提交的时候报Uncaught TypeError :Illegal invocation错误,报错信息如图: 上网查了一下jquery的这个错误,导致这个错误的原因有俩点 ...

  9. centos7 安装mongodb3.4 及用户管理

    https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/1.semanage command not found yum ...

  10. [转]《MEF程序设计指南》博文汇总

    在MEF之前,人们已经提出了许多依赖注入框架来解决应用的扩展性问题,比如OSGI 实现以Spring 等等.在 Microsoft 的平台上,.NET Framework 自身内部包含组件模型和 Sy ...