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

给每条路加上一个权值,每条路的费用是这条路的流量*权值,求最大流的最小费用。

每次spfa记录一下路径找最短的有流量的路,然后就是普通最大流的操作,反向边加流量什么的,网络流的作用依然是选择。

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
#define LL long long
const int maxn=;
int n,m,S,E;
int wi[maxn]={},lo[maxn]={},c[maxn]={},d[maxn]={},zz[maxn]={};
struct nod{
int x,y,co,v,rev,next;
}e[maxn*];
int head[maxn]={},vis[maxn]={},tot=,mx;
void init(int x,int y,int v,int co,int rev){
e[++tot].x=x;e[tot].y=y;e[tot].co=co;
e[tot].v=v;e[tot].rev=rev;e[tot].next=head[x];head[x]=tot;
}
queue<int>q;
int dis[maxn]={},fa[maxn]={};
int spfa(){
memset(vis,,sizeof(vis));
memset(dis,,sizeof(dis));
memset(fa,,sizeof(fa));
mx=dis[];q.push(S);vis[S]=;dis[S]=;
while(!q.empty()){
int x=q.front();q.pop();vis[x]=;
for(int i=head[x];i;i=e[i].next){
if(e[i].v){
if(dis[e[i].y]>dis[x]+e[i].co){
dis[e[i].y]=dis[x]+e[i].co;
fa[e[i].y]=i;
if(!vis[e[i].y]){
vis[e[i].y]=;q.push(e[i].y);
}
}
}
}
}
return fa[E];
}
int fyl(){
int ans=,val=mx;
for(int i=fa[E];i;i=fa[e[i].x])val=min(val,e[i].v);
for(int i=fa[E];i;i=fa[e[i].x]){
e[i].v-=val;e[e[i].rev].v+=val;ans+=val*e[i].co;
}
return ans;
}
int main(){
scanf("%d%d",&n,&m);S=n+m+;E=S+;
for(int i=;i<=n;i++) scanf("%d%d%d%d",&wi[i],&lo[i],&c[i],&d[i]);
int x,y;
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
lo[x]++;lo[y]++;zz[x]++;zz[y]++;
init(S,n+i,,,tot+);init(n+i,S,,,tot);
init(n+i,x,,,tot+);init(x,n+i,,,tot);
init(n+i,y,,,tot+);init(y,n+i,,,tot);
}
int ans=;
for(int i=;i<=n;i++){
ans+=wi[i]*wi[i]*c[i]+lo[i]*lo[i]*d[i];
for(int j=;j<=zz[i];j++){
int z=c[i]*(*wi[i]+)-d[i]*(*lo[i]-);
init(i,E,,z,tot+);init(E,i,,-z,tot);
wi[i]++;lo[i]--;
}
}
while(spfa())ans+=fyl();
printf("%d\n",ans);
return ;
}

BZOJ 1449: [JSOI2009]球队收益 最小费用最大流 网络流的更多相关文章

  1. BZOJ 1449: [JSOI2009]球队收益( 最小费用最大流)

    先考虑假如全部输了的收益. 再考虑每场比赛球队赢了所得收益的增加量,用这个来建图.. --------------------------------------------------------- ...

  2. bzoj 1449 [JSOI2009]球队收益(费用拆分,最小费用流)

    1449: [JSOI2009]球队收益 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 547  Solved: 302[Submit][Status][ ...

  3. BZOJ 1449 JSOI2009 球队收益 费用流

    题目大意:给定nn支球队.第ii支球队已经赢了winiwin_i场.输了loseilose_i场,接下来还有mm场比赛.每一个球队终于的收益为Ci∗x2i+Di∗y2iC_i*x_i^2+D_i*y_ ...

  4. 【BZOJ 1449】 1449: [JSOI2009]球队收益 (最小费用流)

    1449: [JSOI2009]球队收益 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 841  Solved: 483 Description Inpu ...

  5. 【BZOJ-1449&2895】球队收益&球队预算 最小费用最大流

    1449: [JSOI2009]球队收益 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 648  Solved: 364[Submit][Status][ ...

  6. 1449: [JSOI2009]球队收益

    1449: [JSOI2009]球队收益 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 757  Solved: 437[Submit][Status][ ...

  7. BZOJ1449[JSOI2009]球队收益&BZOJ2895球队预算——最小费用最大流

    题目描述 输入 输出 一个整数表示联盟里所有球队收益之和的最小值. 样例输入 3 3 1 0 2 1 1 1 10 1 0 1 3 3 1 2 2 3 3 1 样例输出 43 提示   要求总费用最低 ...

  8. BZOJ 2668 [cqoi2012]交换棋子 | 最小费用最大流

    传送门 BZOJ 2668 题解 同时分别限制流入和流出次数,所以把一个点拆成三个:入点in(x).中间点mi(x).出点ou(x). 如果一个格子x在初始状态是黑点,则连(S, mi(x), 1, ...

  9. BZOJ 1061 志愿者招募(最小费用最大流)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1061 题意:申奥成功后,布布经过不懈努力,终于 成为奥组委下属公司人力资源部门的主管.布 ...

随机推荐

  1. 利用Object.defineProperty 简化 Chrome插件本地存储操作

    通常谷歌插件本地存储写法很别扭☹,如 chrome.storage.sync.get(null,function(data){ //todo console.log(data); });  如果get ...

  2. Spring4笔记8--Spring与JDBC模板(IoC应用的例子)

    Spring 与 JDBC模板: 为了避免直接使用 JDBC 而带来的复杂且冗长的代码,Spring 提供了一个强有力的模板类---JdbcTemplate 来简化 JDBC 操作.并且,数据源 Da ...

  3. PE文件结构及其加载机制

    一.PE文件结构 PE即Portable Executable,是win32环境自身所带的执行体文件格式,其部分特性继承自Unix的COFF(Common Object File Format)文件格 ...

  4. Linux禁止ping的俩种方法【转】

    Linux禁止ping以及开启ping的方法   Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任 ...

  5. Flask:cookie 和 session (0.1)

    Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 Cookie是什么?有什么用? 某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常 ...

  6. webpack轻松入门教程

    webpack之傻瓜式教程及前端自动化入门 接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpa ...

  7. Ibatis.Net 各种配置说明学习(二)

    1.各个配置文件的配置说明 providers.config:指定数据库提供者,.Net版本等信息. xxxxx.xml:映射规则. SqlMap.config:大部分配置一般都在这里,如数据库连接等 ...

  8. irport报表,把数字金额转换成大写人民币金额

    1.编写oracle函数 CREATE OR REPLACE Function MoneyToChinese(Money In Number) Return Varchar2 Is strYuan ) ...

  9. android studio实现Intent通信-------牛刀小试

    概述: 本博文实现一种小程序,两个Activity单向通信,主从关系,MainActivty 页面布局一个EditText+Button,实现逻辑是单击按钮将信息发送给另外一个DisplayMessa ...

  10. 移动端,PC端,微信等常用平台和浏览器判断

    var wzw={ //浏览器相关信息 //android webview 需要app进行支持,Android web view初始化时,在navigator中添加标识 browser:{ versi ...