链接:http://wikioi.com/problem/1035/

怎么说呢,只能说这个建图很有意思。因为只有m条道,然后能互相接在一起的连通,对每个点进行拆点,很有意思的一道裸费用留题。

代码:

 #include <iostream>
#include <queue>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int maxn = ;
const int inf = ;
struct node
{
int u,v,cap,flow,cost,next;
}edges[];
int head[maxn],cnt;
void init(int n)
{
int i;
for(i = ;i <= n;i++)
head[i] = -;
cnt = ; return ;
}
void addedge(int u,int v,int cap,int flow,int cost)
{
edges[cnt].u = u;
edges[cnt].v = v;
edges[cnt].cap = cap;
edges[cnt].flow = flow;
edges[cnt].cost = cost;
edges[cnt].next = head[u];
head[u] = cnt;
cnt++;
edges[cnt].u = v;
edges[cnt].v = u;
edges[cnt].cap = ;
edges[cnt].flow = flow;
edges[cnt].cost = -cost;
edges[cnt].next = head[v];
head[v] = cnt;
cnt++;
}
int vis[maxn],a[maxn],pre[maxn],dis[maxn];
int spfa(int s,int t,int n,int &flow,int &cost)
{
int i;
queue<int> q;
for(i = ;i <= n ;i++)
dis[i] = -,vis[i] = ; dis[s] = ;
pre[s] = ;
vis[s] = ;
a[s] = inf; int u,v;
q.push(s); while(!q.empty())
{
u = q.front();
q.pop();
vis[u] = ; for(i = head[u];i != -;i = edges[i].next)
{
struct node & e = edges[i]; v = e.v;
if(e.cap > e.flow &&dis[v] < dis[u]+e.cost)
{
dis[v] = dis[u]+e.cost;
a[v] = min(a[u],e.cap-e.flow);
pre[v] = i;
if(!vis[v])
{
vis[v] = ;
q.push(v);
}
}
}
} if(dis[t] <= )
return ;
flow+= a[t];
cost += dis[t]*a[t];
u = t;
while(u != s)
{
edges[pre[u]].flow += a[t];
edges[pre[u]^].flow -= a[t];
u = edges[pre[u]].u;
}
return ;
}
int MCMF(int s,int t,int n)
{
int flow = ,cost = ; while(spfa(s,t,n,flow,cost)); return cost;
}
int r[],c[],s[];
int main()
{
int n,m,u,v,i,j; scanf("%d %d",&n,&m);
init(*m);
for(i = ;i <= m;i++)
cin>>r[i]>>c[i]>>s[i]; addedge(,*m+,n,,);
for(i = ;i <= m;i++)
{
addedge(*m+,i,inf,,);
addedge(i,m+i,,,c[i]);
addedge(m+i,*m+,inf,,);
for(j = ;j <= m;j++)
{
if(r[i]+s[i] < r[j])
addedge(m+i,j,inf,,);
}
}
double ans;
ans = 1.0*MCMF(,*m+,*m+); printf("%.2f\n",ans/);
return ;
}

wikioi 1035 火车停留 裸费用流的更多相关文章

  1. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  2. BZOJ-3130 费用流 (听题目胡扯丶裸最大流) 二分判定+最大流+实数精度乱搞

    DCrusher爷喜欢A我做的水题,没办法,只能A他做不动的题了.... 3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec ...

  3. 【wikioi】1033 蚯蚓的游戏问题(费用流)

    http://wikioi.com/problem/1033/ 这题也是很水的费用流啊,同之前那题一样,拆点然后建边,容量为1,费用为点权.然后建个源连第一行每个点,容量为1,费用为0,然后最后一行每 ...

  4. 【wikioi】1227 方格取数 2(费用流)

    http://www.wikioi.com/problem/1227 裸题,拆点,容量为1,费用为点权的负数(代表只能取一次).再在拆好的两个点连边,容量为oo,费用为0.(代表能取0) 然后向右和下 ...

  5. HDU 3376 &amp;&amp; 2686 方格取数 最大和 费用流裸题

    题意: 1.一个人从[1,1] ->[n,n] ->[1,1] 2.仅仅能走最短路 3.走过的点不能再走 问最大和. 对每一个点拆点限流为1就可以满足3. 费用流流量为2满足1 最大费用流 ...

  6. 【wikioi】1034 家园(最大流+特殊的技巧)

    http://wikioi.com/problem/1034/ 太神了这题. 其实一开始我以为是费用流,但是总感觉不对. 原因是我没看到一句话,特定的时刻到达特定的点!! 也就是说,并不是每艘船每次都 ...

  7. BZOJ 1061: [Noi2008]志愿者招募 费用流

    1061: [Noi2008]志愿者招募 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1061 Description 申奥成功后,布布 ...

  8. Aizu 2304 Reverse Roads 费用流

    Reverse Roads Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...

  9. BZOJ 1927: [Sdoi2010]星际竞速 费用流

    1927: [Sdoi2010]星际竞速 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

随机推荐

  1. android使用library

      http://www.vogella.com/tutorials/AndroidLibraryProjects/article.html     介绍support lib使用 http://de ...

  2. vue.js(一)

    之前看过一点vue.js但是知识点没做记录,现在也差不多不记得了,今天把以前看过的翻一遍,顺便提炼一下知识点 注意:下面的所有与vue相关的标签.指令都是写在id="app"的di ...

  3. Puppet学习:Augeas的怪问题

    今天测试部署Zabbix,本来以前是正常的,今天莫名其妙报错.测试后发现是Augeas出现问题,无论如何都不执行.于是采用调试模式: puppet agent --test --verbose --d ...

  4. django通用视图

    通用视图 1. 前言 回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的 动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回 ...

  5. Ubuntu操作异常汇总

    1.使用Ubuntu的apt-get安装软件时出现以下错误: Reading package lists... Done Building dependency tree... Done Packag ...

  6. 通过IP获取对应所在地的地址

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangshuxuncom/article/details/35988143         曾几何时 ...

  7. 代码处理 iOS 的横竖屏旋转

    一.监听屏幕旋转方向 在处理iOS横竖屏时,经常会和UIDeviceOrientation.UIInterfaceOrientation和UIInterfaceOrientationMask这三个枚举 ...

  8. [JS]1.Hello Word

    1.Hello Word <!DOCTYPE html> <html> <head> <title>Hello World!</title> ...

  9. Linux安装rpm包时报错Header V3 DSA/SHA1 Signature, key ID 1d1e034b: NOKEY解决办法

    这是因为yum安装了旧版本的GPG key造成的,解决办法: rpm --import /etc/pki/rpm-gpg/RPM* Header V3 DSA/SHA1 Signature, key ...

  10. VS2010/MFC编程入门之前言

    鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了.但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口.鸡啄米在这套VS2010/M ...