bzoj1877 晨跑(费用流)
1877: [SDOI2009]晨跑
Time Limit: 4 Sec Memory Limit: 64 MB
Submit: 2138 Solved: 1145
Description
Input
Output
Sample Input
1 2 1
1 3 1
2 4 1
3 4 1
4 5 1
4 6 1
2 5 5
3 6 6
5 7 1
6 7 1
Sample Output
HINT
对于30%的数据,N ≤ 20,M ≤ 120。
对于100%的数据,N ≤ 200,M ≤ 20000。
Source
/*
最小费用流=最大流(Dinic)-BFS+SPFA
模板,因为每个点只能走一次
所以流量赋为1,注意起点终点不算十字路口
所以重建原点汇点 。
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define maxn 5010
#define inf 0x3f3f3f3f using namespace std;
int head[maxn],vis[maxn],pre[maxn],dis[maxn];
int n,m,ans,cnt,num=,x,y,z,S,T;
queue<int>q;
struct node
{
int u,v,flow,sum,next;
}e[maxn*]; inline int init()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} inline void add(int u,int v,int flow,int dis)
{
e[++num].v=v;
e[num].flow=flow;
e[num].sum=dis;
e[num].next=head[u];
head[u]=num; e[++num].v=u;
e[num].flow=;
e[num].sum=-dis;
e[num].next=head[v];
head[v]=num;
} bool spfa()
{
for(int i=;i<=T;i++) dis[i]=inf;
q.push(S);vis[S]=;dis[S]=;
while(!q.empty())
{
int now=q.front();q.pop();vis[now]=;//vis忘了置0......
for(int i=head[now];i;i=e[i].next)
{
int v=e[i].v;
if(dis[v]>dis[now]+e[i].sum&&e[i].flow)
{
dis[v]=dis[now]+e[i].sum;
pre[v]=i;
if(!vis[v])
{
vis[v]=;
q.push(v);
}
}
}
}
return dis[T]!=inf;
} int dfs()
{
int tmp=T;
while(tmp!=S)//从终点一直不断往前找
{
int now=pre[tmp],v=e[now].v;
e[now].flow--;e[now^].flow++;
tmp=e[now^].v;
}
ans+=dis[T];
} int main()
{
n=init();m=init();
S=,T=n*+;
add(S,,inf,);add(n*,T,inf,);
for(int i=;i<n;i++)add(i,i+n,,);
add(,+n,inf,);add(n,n+n,inf,);
for(int i=;i<=m;i++)
{
x=init();y=init();z=init();
add(x+n,y,,z);
}
while(spfa())
{
cnt++;dfs();
}
printf("%d %d\n",cnt,ans);
return ;
}
bzoj1877 晨跑(费用流)的更多相关文章
- [SDOI2009][bzoj1877] 晨跑 [费用流]
题面: 传送门 思路: 一个点只能走一回,路径不能相交...... 显然可以转化为网络流的决策来做 我们构建一个网络,令其最大流等于最大的跑步天数即可 怎么构造呢? 对于每个点只能走一次的限制,可以考 ...
- 【bzoj1877】[SDOI2009]晨跑 费用流
题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...
- BZOJ 1877: [SDOI2009]晨跑 费用流
1877: [SDOI2009]晨跑 Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一 ...
- B1877 [SDOI2009]晨跑 费用流
其实之前写过一个板子,但是一点印象都没有,所以今天重写了一下,顺便把这个题当成板子就行了. 其实费用流就是把bfs换成spfa,但是中间有一个原则,就是费用优先,在费用(就是c)上跑spfa,顺便求出 ...
- BZOJ-1877 晨跑 最小费用最大流+拆点
其实我是不想做这种水题的QWQ,没办法,剧情需要 1877: [SDOI2009]晨跑 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 1704 Solve ...
- bzoj1877 晨跑
Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他 坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个 ...
- 【BZOJ1877】[SDOI2009]晨跑 最小费用最大流
[BZOJ1877][SDOI2009]晨跑 Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现 ...
- HDU4807 Lunch Time(费用流变种)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4807 Description The campus of Nanjing Universit ...
- bzoj4514: [Sdoi2016]数字配对--费用流
看了一眼题目&数据范围,觉得应该是带下界的费用流 原来想拆点变成二分图,能配对的连边,跑二分图,可行性未知 后来看到另外一种解法.. 符合匹配要求的数要满足:质因子的个数相差为1,且两者可整除 ...
随机推荐
- 散列--P1047 校门外的树
题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,-,L,都种有 ...
- ecshop笔记
***ecshop在线入门手册***:http://book.ecmoban.com/ 解决ecshop与jquery冲突问题1.修改文件:/js/transport.js在文件最底部增加代码: if ...
- db2 group by的疑惑。
按借据号分组,显示每组的条数:
- radis入门
redis介绍 是远程的,有客户端.服务端 存内存,吃内存 应用场景 缓存 队列 list操作 push pop 数据存储[根据redis硬盘持久化的机制,这里不展开] 5种数据类型 string 字 ...
- sprintf用法
函数简介 函数功能:把格式化的数据写入某个字符串 头文件:stdio.h 函数原型:int sprintf( char *buffer, const char *format [, argument] ...
- 九度oj 1179 阶乘
题目1179:阶乘 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6010 解决:1756 题目描述: 输入n,求y1=1!+3!+...m!(m是小于等于n的最大奇数)y2=2!+4!+ ...
- 55. spring boot 服务配置和部署【从零开始学Spring Boot】
Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat).当然你也可以将项 ...
- rpm 命令的使用
rpm -ivh xv-3.10a-13.i386.rpm 在Terminal中,基本的安装指令如下: rpm -i xv-3.10a-13.i386.rpm 如果你的连网速度足够快,也可 ...
- 26、Java并发性和多线程-线程池
以下内容转自http://ifeve.com/thread-pools/: 线程池(Thread Pool)对于限制应用程序中同一时刻运行的线程数很有用.因为每启动一个新线程都会有相应的性能开销,每个 ...
- mybatis指定jdbctype
MyBatis 插入空值时,需要指定JdbcType mybatis insert空值报空值异常,但是在pl/sql不会提示错误,主要原因是mybatis无法进行转换 所以在MyBatis映射文件中要 ...