3876: [Ahoi2014]支线剧情

题意:每次只能从1开始,每条边至少经过一次,有边权,求最小花费


裸上下界费用流...每条边下界为1就行了

注意要加上下界*边权

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define fir first
#define sec second
typedef long long ll;
const int N=1005, M=4e5+5, INF=1e9;
inline ll read(){
char c=getchar();ll x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
} int n, m, s, t, tot, extra[N], x, val, ss, tt, sum;
struct edge{int v, c, f, w, ne, lower;}e[M];
int cnt=1, h[N];
inline void ins(int u, int v, int c, int w=0, int lower=0) {
e[++cnt] = (edge){v, c, 0, w, h[u], lower}; h[u]=cnt;
e[++cnt] = (edge){u, 0, 0, -w, h[v], lower}; h[v]=cnt;
}
int q[N], head, tail, d[N], inq[N];
pair<int, int> pre[N];
inline void lop(int &x) {if(x==N) x=1;}
bool spfa(int s, int t) {
memset(inq, 0, sizeof(inq));
memset(d, 0x3f, sizeof(d));
head=tail=1;
q[tail++]=s; d[s]=0; inq[s]=1;
pre[t].fir = -1;
while(head!=tail) {
int u=q[head++]; inq[u]=0; lop(head);
for(int i=h[u];i;i=e[i].ne) {
int v=e[i].v;
if(e[i].c > e[i].f && d[v]>d[u]+e[i].w) {
d[v]=d[u]+e[i].w;
pre[v]=make_pair(u, i);
if(!inq[v]) q[tail++]=v, inq[v]=1, lop(tail);
}
}
}
return pre[t].fir != -1;
}
int ek(int s, int t) {
int flow=0, cost=0, x;
while(spfa(s, t)) {
int f=INF;
for(int i=t; i!=s; i=pre[i].fir) x=pre[i].sec, f=min(f, e[x].c - e[x].f);
flow+=f; cost+=d[t]*f;
for(int i=t; i!=s; i=pre[i].fir) x=pre[i].sec, e[x].f+=f, e[x^1].f-=f;
}
return cost;
} int main() {
freopen("in","r",stdin);
n=read(); s=0; t=n+1;
ins(s, 1, INF, 0, 0);
int ans=0;
for(int i=1; i<=n; i++) {
int k=read();
while(k--) x=read(), val=read(), ins(i, x, INF, val, 1), extra[i]--, extra[x]++, ans+=val;
ins(i, t, INF, 0, 0);
}
ss=t+1, tt=t+2, sum=0; tot=tt;
for(int i=s; i<=t; i++) {
if(extra[i]>0) ins(ss, i, extra[i]);
if(extra[i]<0) ins(i, tt, -extra[i]);
}
ins(t, s, INF);
ans+=ek(ss, tt);
printf("%d", ans);
}

BZOJ 3876: [Ahoi2014]支线剧情 [上下界费用流]的更多相关文章

  1. [bzoj3876][AHOI2014]支线剧情——上下界费用流

    题目 传送门 题解 建立s和t,然后s向1连下限0上限inf费用0的边,除1外所有节点向t连下限0上限inf费用0的边,对于每条边下限为1上限为inf费用为经过费用,然后我们只有做上下界网络流构出新图 ...

  2. BZOJ 3876: [Ahoi2014]支线剧情 带下界的费用流

    3876: [Ahoi2014]支线剧情 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3876 Description [故事背景] 宅 ...

  3. [AHOI2014&&JSOI2014][bzoj3876] 支线剧情 [上下界费用流]

    题面 传送门 思路 转化模型:给一张有向无环图,每次你可以选择一条路径走,花费的时间为路径上边权的总和,问要使所有边都被走至少一遍(可以重复),至少需要花费多久 走至少一遍,等价于覆盖这条边 也就是说 ...

  4. BZOJ 3876 支线剧情 | 有下界费用流

    BZOJ 3876 支线剧情 | 有下界费用流 题意 这题题面搞得我看了半天没看懂--是这样的,原题中的"剧情"指的是边,"剧情点"指的才是点. 题面翻译过来大 ...

  5. 【有源汇上下界费用流】BZOJ 3876 [Ahoi2014]支线剧情

    题目链接: http://www.lydsy.com:808/JudgeOnline/problem.php?id=3876 题目大意: 给定一张拓扑图(有向无环图),每条边有边权,每次只能从第一个点 ...

  6. bzoj 3876 [Ahoi2014]支线剧情(有上下界的最小费用流)

    3876: [Ahoi2014]支线剧情 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 484  Solved: 296[Submit][Status ...

  7. bzoj 1061 志愿者招募 有上下界费用流做法

    把每一天看作一个点,每一天的志愿者数目就是流量限制,从i到i+1连边,上下界就是(A[i],+inf). 对于每一类志愿者,从T[i]+1到S[i]连边,费用为招募一个志愿者的费用,流量为inf.这样 ...

  8. BZOJ 1927: [Sdoi2010]星际竞速 [上下界费用流]

    1927: [Sdoi2010]星际竞速 题意:一个带权DAG,每个点恰好经过一次,每个点有曲速移动到他的代价,求最小花费 不动脑子直接上上下界费用流过了... s到点连边边权为曲速的代价,一个曲速移 ...

  9. bzoj 3876: [Ahoi2014]支线剧情

    就是加一个1的下界就好了. #include<bits/stdc++.h> #define N 100005 #define LL long long #define inf 0x3f3f ...

随机推荐

  1. 通过案例理解position:relative和position:absolute

    w3school过了HTML的知识之后,觉得要自己单纯地去啃知识点有点枯燥,然后自己也很容易忘记,所以便找具体的网站练手便补上不懂的知识点.position:relative和postion:abso ...

  2. JavaScript八张思维导图—编程风格

    JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实践 不知不觉做前端已经五年多了,无论是从最初的jQuery还是现在火热的Angular,Vu ...

  3. node学习笔记1——require参数查找策略

    require参数类型 http.fs.path等,原生模块 ./mod或../mod,相对路径的文件模块 /pathtomodule/mod,绝对路径的文件模块 mod,非原生模块的文件模块 mo ...

  4. Git的简单的基本使用

    前言: 接触了Android Studio,自然是知道了Github这个网站,这个网站有许多大神们做的开源库,我们只需要简单地引入就是可以使用到这些开源库从而实现酷炫的效果,最近也是刚接触到Git的使 ...

  5. java常量池詳解

    一.相关概念 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Class文件中的常量池在Clas ...

  6. window.history.go(-1)返回且刷新页面

    windows窗口对象(历史)history.go(),history.back(),history.forward(). 因为windows对象引用不是必须的.所以windows.history.g ...

  7. 2.移植3.4内核-使内核支持烧写yaffs2

    在上章-制作文件系统,并使内核成功启动jffs2文件系统了 本章便开始使内核支持烧写yaffs2文件系统 1.首先获取yaffs2源码(参考git命令使用详解) cd /work/nfs_root g ...

  8. asp.net -mvc框架复习(11)-基于三层架构与MVC实现完整的用户登录

    一.先从M部分写起(Modles\DAL\BLL) 1.Modles 实体类:上次实体类已经搞定. 2.DAL 数据访问类类 (1)通用数据数据访问类: A:  先编写数据连接字符串,写到网站根目录W ...

  9. eclipse 用maven创建web项目

    Eclipse 用maven构建web项目 (2013-01-27 11:05:31) 转载▼ 标签: it eclipse maven spring web 杂谈   一.背景介绍 对于初学者,用m ...

  10. Assembly oth

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...