#include <iostream>
#include <cstdio>
#include <cmath>
#include <queue>
#include <cstring>
using namespace std;
const int maxm = 50000*4;
const int maxn = 110;
struct node
{
int v,cost,flow,next;//v表示指向的下一个顶点,a表示系数,flow表示可以过的流量
}edge[maxm];
int head[maxn],dis[maxn],pre[maxn],cur[maxn],vis[maxn],aug[maxn];
int s,t,v,n,m,k,id,flow;
void add_edge(int u,int v,int flow,int cost){
edge[id].v = v;edge[id].cost = cost;edge[id].flow = flow;edge[id].next = head[u];head[u] = id++;
edge[id].v = u;edge[id].cost = -cost;edge[id].flow = 0;edge[id].next = head[v];head[v] = id++;
}
int min(int x,int y){
return x < y ? x : y;
}
void init(){
s = 0,t = n+1;
memset(head,-1,sizeof(head));id = 0;
int u,v,a,flow; while( m-- ){
scanf("%d%d%d%d",&u,&v,&a,&flow);
for(int i = 1; i <= flow; i++)//因为边很少,所以可以拆边
add_edge(u,v,1,i*i*a - a*(i-1)*(i-1));//每增加一条边,费用增加
}
//源点流出的流量为k,汇点流入的流量为k
add_edge(0,1,k,0);
add_edge(n,n+1,k,0);
}
int spfa(){
memset(dis,-1,sizeof(dis));
memset(vis,0,sizeof(vis));
memset(aug,-1,sizeof(aug));
queue<int>que;
aug[s] = (1<<30) -1;
dis[s] = 0;vis[s] = 1;pre[s] = s;
que.push(s);
while( !que.empty()){
int u = que.front();
que.pop();
vis[u] = 0;
for(int id = head[u]; id != -1; id = edge[id].next)
{
int v = edge[id].v;
if( edge[id].flow > 0)
{
int MIN = min(aug[u],edge[id].flow);
if(dis[v] == -1 || dis[v] > dis[u] + edge[id].cost)
{
dis[v] = dis[u] + edge[id].cost;
pre[v] = u;cur[v] = id;
aug[v] = MIN;
// cout << v << " " << aug[v] << endl;
if(!vis[v] ){
vis[v] = 1;
que.push(v);
}
}
}
}
}
if( dis[t] == -1 )return 0;
return 1;
}
int get_max(){ int mincost = 0;
while(spfa() ){
mincost += dis[t];
k -= aug[t];
int now = t;
while( now != s){
edge[cur[now]].flow -= aug[t];
edge[cur[now]^1].flow += aug[t];
now = pre[now];
}
}
if(k > 0)return -1;
return mincost;
}
int main(){
// freopen("in.txt","r",stdin);
while(~scanf("%d%d%d",&n,&m,&k)){
init();
printf("%d\n",get_max());
}
return 0;
}

  

UVA1486 Transportation 费用流 拆边。的更多相关文章

  1. HDU 3667 费用流 拆边 Transportation

    题意: 有N个城市,M条有向道路,要从1号城市运送K个货物到N号城市. 每条有向道路<u, v>运送费用和运送量的平方成正比,系数为ai 而且每条路最多运送Ci个货物,求最小费用. 分析: ...

  2. hoj 2543 (费用流 拆边)

    http://acm.hit.edu.cn/hoj/problem/view?id=2543 1.将原图中的每条边(u, v)拆成两条:(u, v, Ci, 0), (u, v, ∞, Ei) 2.购 ...

  3. UVa1486 Transportation(最小费用最大流)

    题目大概说有n个城市,m条有向边连着它们,每条边都有两个属性一个是ai一个是ci,ai表示运送x单位货物时花费ai*x*x的价钱,ci表示边最多能运送的货物数量(<=5).问从城市1运送k单位货 ...

  4. 【 UVALive - 5095】Transportation(费用流)

    Description There are N cities, and M directed roads connecting them. Now you want to transport K un ...

  5. HDU 3667 Transportation(网络流之费用流)

    题目地址:HDU 3667 这题的建图真是巧妙...为了保证流量正好达到k.须要让每一次增广到的流量都是1,这就须要把每一条边的流量都是1才行.可是每条边的流量并非1,该怎么办呢.这个时候能够拆边,反 ...

  6. 【BZOJ4930】棋盘 拆边费用流

    [BZOJ4930]棋盘 Description 给定一个n×n的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置(x,y),(u,v)能互相攻击当前仅 当满足以下两个条件: 1:x=u或y ...

  7. 【BZOJ2245】[SDOI2011]工作安排 拆边费用流

    [BZOJ2245][SDOI2011]工作安排 Description 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被 ...

  8. 【 UVALive - 2197】Paint the Roads(上下界费用流)

    Description In a country there are n cities connected by m one way roads. You can paint any of these ...

  9. zoj3231 Apple Transportation(最大流)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Apple Transportation Time Limit: 1 Second ...

随机推荐

  1. javaweb入门---web服务器与HTTP协议基础

    上文web基础简介了web到底是什么,以及身为Java开发人员需要掌握的地方.本文将解答web服务器是什么,怎么使用?还有关于http协议的基础知识. web服务器 web服务器的大概念很广泛,但是通 ...

  2. Flink状态专题:keyed state和Operator state

            众所周知,flink是有状态的计算.所以学习flink不可不知状态.         正好最近公司有个需求,要用到flink的状态计算,需求是这样的,收集数据库新增的数据.       ...

  3. Django REST framework的使用简单介绍

    官方文档:https://www.django-rest-framework.org/ GitHub源码:https://github.com/encode/django-rest-framework ...

  4. 【Laravel】 安装及常用的artisan命令

    composer Laravel 安装 cmd composer create-project laravel/laravel Laravel5 之后自动创建 常用的artisan命令 全局篇 查看a ...

  5. java8(一)Lambda表达式

    其实很久前已经学习过了Lambda表达式,但是学习后没有多少使用的机会,久而久之也就忘记(惭愧).最近新的项目用的jdk8所以准备再学习一次,写下文章也是为了记录,方便以后再忘的时候,不用到处找资料( ...

  6. Go中的反射reflect

    前面我们在学习到struct结构体的时候,因为结构体中的字段首字母大写,而我们想把json文件映射到该结构体上时,需要在在结构体字段后面加上json标签,表明结构体字段和json字段的映射关系.这其中 ...

  7. cs231n---CNN架构

    1 LeNet-5 (1998) 第一个被提出的卷积网络架构,深度较浅,用于手写数字识别. 2 AlexNet (2012) 架构为: CONV1 ->MAX POOL1 ->NORM1 ...

  8. windows 下 ctags 安装以及 tags 目录创建

    最近处理 .as 格式代码,需要转换成 c# 格式, 用 VS 查看,无法跳转,十分蛋疼,又用起了好久没用的 VIM,配置 tags 文件,实现自动跳转. 1.下载ctag文件http://ctags ...

  9. IDEA搭建工程

    1. 创建一个Project File -> New -> Project...   : 选择jdk版本,然后Next: 输入项目名,确定项目路径,Finish. 2. 创建一个Modul ...

  10. Nacos(三):Nacos与OpenFeign的对接使用

    前言 上篇文章中,简单介绍了如何在SpringCloud项目中接入Nacos作为注册中心,其中服务消费者是通过RestTemplate+Ribbon的方式来进行服务调用的. 实际上在日常项目中服务间调 ...