[题目链接]

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. ThinkPHP---thinkphp会话支持和文件载入

    [一]会话控制 会话支持一般指cookie和session,在ThinkPHP里为了方便开发,封装了cookie和session方法. (1)session方法 在函数库封装了session方法 se ...

  2. PIE SDK 监督分类对话框类(SupervisedClassificaitonDialog)使用经验

    最近研究遥感,用到分类算法,PIE SDK正好提供了一些方法可供调用,他们的官方博客上也有相应的示例代码(可参考:https://www.cnblogs.com/PIESat/p/10725270.h ...

  3. ie7下设置z-index无效如何解决?

    ie7下z-index无效的问题之前做练习的时候遇到过,百度解决掉之后就丢脑后了.今天项目中又发现这个bug,无奈又去百度,这次还是记下来,节省了百度的时间还能小装一把... 需求是这样的: 页面中的 ...

  4. 每日命令:(1)ls

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...

  5. Linux有几种安装软件的方式?????

    看了Windows后台软件安装的过程,想必Linux也是这样.拿RHEL7来打比方 最开始Linux上安装软件只提供源代码,需要自己去编译源代码,拷贝库文件等 RPM 红帽软件包管理器可以自动地执行上 ...

  6. Python学习第二阶段day1 内置函数,序列化,软件目录开发规范

    内置函数 1.abs()  求绝对值 2.all()    所有元素为真才返回真 all( [1,1,2,3,-1] ) 值为True 3.any()   所有元素为假才返回假  any([0,0,0 ...

  7. redis+php+mysql处理高并发实例

    一.实验环境ubuntu.php.apache或nginx.mysql二.利用Redis锁解决高并发问题,需求现在有一个接口可能会出现并发量比较大的情况,这个接口使用php写的,做的功能是接收 用户的 ...

  8. 百练4103:踩方格(DFS)

    描述 有一个方格矩阵,矩阵边界在无穷远处.我们做如下假设:a.    每走一步时,只能从当前方格移动一格,走到某个相邻的方格上:b.    走过的格子立即塌陷无法再走第二次:c.    只能向北.东. ...

  9. HDU 4598 Difference

    Difference Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  10. 转载 - Python里面关于 模块 和 包 和 __init__.py 的一些事

    出处:http://www.cnblogs.com/tqsummer/archive/2011/01/24/1943273.html python中的Module是比较重要的概念.常见的情况是,事先写 ...