P4843 清理雪道(上下界网络流)
上下界最小流
我们先搞一遍上下界可行流(转)
回忆上下界最大流的写法:在可行流的残量网络$s\ -\ t$上跑最大流,答案为可行流$+$残量网络的最大流
那么上下界最小流的写法呢?
只要在残量网络$t\ -\ s$上跑最大流,答案就是可行流$-$残量网络$t\ -\ s$的最大流辣
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define N 1005
#define M 1000005
const int inf=2e9;
int n,S,T,pS,pT,ex[N],d[N],cur[N];
queue <int> h; bool vis[N];
int cnt=,hd[N],nxt[M],ed[N],poi[M],val[M],fr[M];
inline void adde(int x,int y,int v){
nxt[ed[x]]=++cnt, hd[x]=hd[x]?hd[x]:cnt,
ed[x]=cnt, poi[cnt]=y, val[cnt]=v, fr[cnt]=x;
}
inline void link(int x,int y,int v){adde(x,y,v),adde(y,x,);}
inline void ins(int x,int y,int l,int r){link(x,y,r-l),ex[x]-=l,ex[y]+=l;}
bool bfs(){
for(int i=;i<=pT;++i) vis[i]=,cur[i]=hd[i];
h.push(S); vis[S]=;
while(!h.empty()){
int x=h.front(); h.pop();
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
if(!vis[to]&&val[i]>)
d[to]=d[x]+,vis[to]=,h.push(to);
}
}return vis[T];
}
int dfs(int x,int a){
if(x==T||a==) return a;
int F=,f;
for(int &i=cur[x];i;i=nxt[i]){
int to=poi[i];
if(d[to]==d[x]+&&(f=dfs(to,min(a,val[i])))>)
a-=f,F+=f,val[i]-=f,val[i^]+=f;
if(!a) break;
}return F;
}
int dinic(){int re=; while(bfs())re+=dfs(S,inf);return re;}
void del(int x){for(int i=hd[x];i;i=nxt[i])val[i]=val[i^]=;}
int main(){
scanf("%d",&n); int tt,pi;
S=n+; T=S+; pS=T+; pT=pS+;
for(int i=;i<=n;++i){
ins(S,i,,inf);
ins(i,T,,inf);
scanf("%d",&tt);
while(tt--) scanf("%d",&pi),ins(i,pi,,inf);
}
for(int i=;i<=T;++i){//调整
if(ex[i]<) link(i,pT,-ex[i]);
if(ex[i]>) link(pS,i,ex[i]);
}link(T,S,inf);//T向S连inf,使流量守恒
int tmps=S,tmpt=T;
S=pS; T=pT; dinic();
int Flow=val[cnt]; val[cnt]=val[cnt-]=;//可行流的大小即为(T,S,inf)的反向边的流量
S=tmpt; T=tmps; del(pS); del(pT);//倒着跑最大流
printf("%d",Flow-dinic());
return ;
}
P4843 清理雪道(上下界网络流)的更多相关文章
- [bzoj2502]清理雪道[上下界网络流]
bzoj状态里有两种,一种时间是个位数,一种是四位数,我就是四位数的那种,,,估计都是看了hzwer.. #include <bits/stdc++.h> #define INF 0x3f ...
- P4843 清理雪道
题目地址:P4843 清理雪道 上下界网络流 无源汇上下界可行流 给定 \(n\) 个点, \(m\) 条边的网络,求一个可行解,使得边 \((u,v)\) 的流量介于 \([B(u,v),C(u,v ...
- [BZOJ2502]清理雪道 有上下界网络流(最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场 ...
- hdu 4940 Destroy Transportation system( 无源汇上下界网络流的可行流推断 )
题意:有n个点和m条有向边构成的网络.每条边有两个花费: d:毁坏这条边的花费 b:重建一条双向边的花费 寻找这样两个点集,使得点集s到点集t满足 毁坏全部S到T的路径的费用和 > 毁坏全部T到 ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F Fantastic Graph(贪心或有源汇上下界网络流)
https://nanti.jisuanke.com/t/31447 题意 一个二分图,左边N个点,右边M个点,中间K条边,问你是否可以删掉边使得所有点的度数在[L,R]之间 分析 最大流不太会.. ...
- 算法笔记--最大流和最小割 && 最小费用最大流 && 上下界网络流
最大流: 给定指定的一个有向图,其中有两个特殊的点源S(Sources)和汇T(Sinks),每条边有指定的容量(Capacity),求满足条件的从S到T的最大流(MaxFlow). 最小割: 割是网 ...
- POJ 2396 Budget(有源汇上下界网络流)
Description We are supposed to make a budget proposal for this multi-site competition. The budget pr ...
- HDU 4940 Destroy Transportation system(无源汇上下界网络流)
Problem Description Tom is a commander, his task is destroying his enemy’s transportation system. Le ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph (贪心或有源汇上下界网络流)
"Oh, There is a bipartite graph.""Make it Fantastic."X wants to check whether a ...
随机推荐
- linux详解 rsync 服务和配置文件
首先要选择服务器启动方式: l 对于负荷较重的 rsync 服务器应该选择独立运行方式 l 对于负荷较轻的 rsync 服务器应该选择 xinetd 运行方式 l 创建配 ...
- 如何判断当前LINUX系统启用了ASLR
内核参数randomize_va_space用于控制系统级ASLR 0 关闭ASLR 1 mmap base.stack.vdso page将随机化.这意味着.so文件将被加载到随机地址.链接时指定了 ...
- @property属性装饰器
顾名思义,@property就是一个跟属性相关的装饰器, 使用了它之后,取值和赋值操作都变得简洁 from datetime import date, datetime class User: def ...
- spring boot 1.视图解析器,2.开启静态资源访问
1.spring boot 视图解析器 #视图解析器 #前缀spring.mvc.view.prefix=/pages/ #后缀..jsp.dospring.mvc.view.suffix=.jsp ...
- web选择文件夹上传
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...
- [USACO10MAR]伟大的奶牛聚集Great Cow Gat… ($dfs$,树的遍历)
题目链接 Solution 辣鸡题...因为一个函数名看了我贼久. 思路很简单,可以先随便指定一个根,然后考虑换根的变化. 每一次把根从 \(x\) 换成 \(x\) 的一个子节点 \(y\),记录一 ...
- ::before和::after的详细介绍
原文传送门: https://www.cnblogs.com/staro... 一.介绍 css3为了区分伪类和伪元素,伪元素采用双冒号写法. 常见伪类--:hover,:link,:active,: ...
- UNITY编辑器模式下static变量的坑
在unity中写编辑器扩展工具,如在编辑器中加个菜单,点击这个菜单项时执行打包功能. 类如下,其中的静态变量,如果每次进来不清空,则LIST会越来越大,打包函数执行完后系统不会帮我们清空 #if UN ...
- zabbix 接入钉钉机器人报警
import requests import json import sys import os headers = {'Content-Type': 'application/json;charse ...
- 如何正确安装Mysql
1.官网去下载 2.针对操作系统的不同下载不同的版本 安装步骤: 第一步解压文件:位置为你想要安装的盘符第二步加载环境变量加载的是bin目录第三步初始化:在cmd终端中输入 mysqld --ini ...