1877. [SDOI2009]晨跑【费用流】
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
唯一和模板不同的就是我们要限制每个点只能到一次。
这一看就是常规拆点啊
所以
我们将点裂成两个,然后在两点间连一个容量为1费用为0的边,用来限制每个点只能走一次
然后再在x+n和y中的连边,把容量设为1,费用设为边长
跑一边从(n+1)到n的最小费用最大流(因为1节点可以重复走所以要n+1)
最大流和最小费用即为答案。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
struct node
{
int Flow;
int Cost;
int to;
int next;
}edge[];
queue<int>q;
int INF,dis[],pre[];
int head[],num_edge;
bool used[]; void add(int u,int v,int l,int c)
{
edge[++num_edge].to=v;
edge[num_edge].Flow=l;
edge[num_edge].Cost=c;
edge[num_edge].next=head[u];
head[u]=num_edge;
} bool SPFA(int s,int e)
{
memset(pre,-,sizeof(pre));
memset(dis,0x7f,sizeof(dis));
q.push(s);
dis[s]=;
used[s]=true;
while (!q.empty())
{
int x=q.front();
q.pop();
for (int i=head[x];i!=;i=edge[i].next)
if (edge[i].Flow> && dis[x]+edge[i].Cost<dis[edge[i].to])
{
dis[edge[i].to]=dis[x]+edge[i].Cost;
pre[edge[i].to]=i;
if (!used[edge[i].to])
{
used[edge[i].to]=true;
q.push(edge[i].to);
}
}
used[x]=false;
}
return (dis[e]!=INF);
} void MCMF(int s,int e)
{
int d=INF,Ans=,Fee=;
while (SPFA(s,e))
{
for (int i=e;i!=s;i=i=edge[((pre[i]-)^)+].to)
d=min(edge[pre[i]].Flow,d);
for (int i=e;i!=s;i=i=edge[((pre[i]-)^)+].to)
{
edge[pre[i]].Flow-=d;
edge[((pre[i]-)^)+].Flow+=d;
}
Ans+=d;
Fee+=dis[e]*d;
}
printf("%d %d",Ans,Fee);
} int main()
{
memset(&INF,0x7f,sizeof(INF));
int n,m,u,v,l;
scanf("%d%d",&n,&m);
for (int i=;i<=n;++i)
{
add(i,i+n,,);
add(i+n,i,,);
}
for (int i=;i<=m;++i)
{
scanf("%d%d%d",&u,&v,&l);
add(u+n,v,,l);
add(v,u+n,,-l);
}
MCMF(n+,n);
}
1877. [SDOI2009]晨跑【费用流】的更多相关文章
- BZOJ 1877: [SDOI2009]晨跑 费用流
1877: [SDOI2009]晨跑 Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一 ...
- 【bzoj1877】[SDOI2009]晨跑 费用流
题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...
- B1877 [SDOI2009]晨跑 费用流
其实之前写过一个板子,但是一点印象都没有,所以今天重写了一下,顺便把这个题当成板子就行了. 其实费用流就是把bfs换成spfa,但是中间有一个原则,就是费用优先,在费用(就是c)上跑spfa,顺便求出 ...
- BZOJ 1877: [SDOI2009]晨跑( 最小费用最大流 )
裸的费用流...拆点, 流量限制为1, 最后的流量和费用即答案. ------------------------------------------------------------------- ...
- 1877: [SDOI2009]晨跑
1877: [SDOI2009]晨跑 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 2007 Solved: 1085[Submit][Status][ ...
- BZOJ 3438 小M的作物 & BZOJ 1877 [SDOI2009]晨跑
我由衷地为我的朋友高兴.哈哈,yian,当你nick name破百上千时,再打“蒟蒻”就会被打的. 好的,说正事吧.请注意,这还是题解.但我发现,网络流实在是太套路了(怪不得这两年几乎销声匿迹).我们 ...
- 【BZOJ】1877: [SDOI2009]晨跑(最小费用最大流)
http://www.lydsy.com/JudgeOnline/problem.php?id=1877 费用流做多了,此题就是一眼题. 拆点表示只能经过一次,容量为1,费用为0. 然后再连边即可,跑 ...
- bzoj 1877 [SDOI2009]晨跑(最小费用最大流)
Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十 ...
- BZOJ 1877: [SDOI2009]晨跑(费用流)
看到要求两个量就下意识的想到了费用流= =,先把一个点拆成两个点就能够解决一个的只经过一次的限制 CODE: #include<cstdio>#include<iostream> ...
随机推荐
- hdu 2612
Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Implementation:Segment Tree 线段树
早就听人提起过线段树,今天有题搞不出来,讨论上说要用一下线段树,看了下,本质上是空间划分索引,只不过是一维上面的,如果在二维则是四叉树,三维则是八叉树,如果可以动态调整那么跟R-Tree就很相似了,他 ...
- app判断链接参数后缀跳转不同地址
http://testhf.irongbei.com/DoubleAct/index?from=app <?php $urlp = (isset($_GET['from']) && ...
- html History API
History api 兼容性支持一下浏览器 为什么要使用History API 在AJAX给我们带来提高用户体验.减少HTTP连接数等好处的同时,也渐渐显露出一些不足之处,比如: 1.页面全是用aj ...
- (项目积累的)SQL数据库点滴
最近的的系统用的数据库是mssql,软件mssql 2008 r2 1.存储过程:后勤的综合管理系统(后端内网访问)三层架构配套用的是存储过程,里面列表展示的都是用存储过程,如下: 1)数据库脚本 U ...
- 漂亮的ActionBar效果
Newsstand—这个应用引进了新的方式,使得ActionBar达到了新的水平.如果你打开这个应用的发布页,你会注意到不带图标的ActionBar是半透明的,而且和一个大的图片集(一个大的杂志图标, ...
- Android的onCreateOptionsMenu()创建菜单Menu
android一共有三种形式的菜单: 1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜 ...
- 网络 IP地址、网段、子网掩码
IP地址范围,最小:00000000,00000000,00000000,00000000:最大:11111111,11111111,11111111,11111111 即:最小:0.0.0.0 最大 ...
- 通过html导出PDF如何分页
每页一个DIV,加上样式page-break-inside:avoid; 即可分页了 .pdfpage{page-break-inside:avoid;} <div class="pd ...
- null的专栏:https://blog.csdn.net/google19890102
null的专栏:https://blog.csdn.net/google19890102 csdn博客专栏:https://blog.csdn.net/column.html