2502: 清理雪道

题意:任意点出发任意次每条边至少经过一次最小花费。


下界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, x, s, t, tot, extra[N];
struct edge{int v, c, f, ne, lower;}e[M];
int cnt=1, h[N];
inline int ins(int u, int v, int c, int b=0) {e[++cnt]=(edge){v, c, 0, h[u], b}; h[u]=cnt;e[++cnt]=(edge){u, 0, 0, h[v], b}; h[v]=cnt;return cnt-1;
}
int q[N], head, tail, vis[N], d[N], cur[N];
bool bfs(int s, int t) {memset(vis, 0, sizeof(vis));head=tail=1;q[tail++]=s; d[s]=0; vis[s]=1;while(head!=tail) {int u=q[head++];for(int i=h[u];i;i=e[i].ne) if(!vis[e[i].v] && e[i].c>e[i].f) { vis[e[i].v]=1; d[e[i].v]=d[u]+1;q[tail++]=e[i].v;if(e[i].v == t) return true;}}return false;
}
int dfs(int u, int a, int t) { if(u==t || a==0) return a;int flow=0, f;for(int &i=cur[u];i;i=e[i].ne) if(d[e[i].v]==d[u]+1 && (f=dfs(e[i].v, min(a, e[i].c-e[i].f), t))>0) {flow+=f;e[i].f+=f;e[i^1].f-=f;a-=f;if(a==0) break;}if(a) d[u]=-1;return flow;
}
int dinic(int s, int t) {int flow=0;while(bfs(s, t)) {for(int i=0; i<=tot; i++) cur[i]=h[i];flow+=dfs(s, INF, t); }return flow;
}int main() {freopen("in","r",stdin);n=read(); s=0; t=n+1;for(int i=1; i<=n; i++) {m=read();while(m--) x=read(), ins(i, x, INF, 1), extra[i]--, extra[x]++;ins(s, i, INF); ins(i, t, INF);}int 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]), sum+=extra[i];if(extra[i]<0) ins(i, tt, -extra[i]);}ins(t, s, INF);int flow=dinic(ss, tt); //printf("flow %d\n",flow);int feas = e[cnt-1].f;e[cnt-1].c = e[cnt].c = 0;printf("%d",feas-dinic(t, s));
}

BZOJ 2502: 清理雪道 [最小流]相关推荐

  1. bzoj 2502: 清理雪道(有下界的最小流)

    2502: 清理雪道 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1218  Solved: 663 [Submit][Status][Discu ...

  2. [BZOJ2502]清理雪道 有上下界网络流(最小流)

    2502: 清理雪道 Time Limit: 10 Sec  Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有 ...

  3. [BZOJ2502]清理雪道解题报告|带下界的最小流

    滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时清理雪道.你们拥有一架直升飞机,每次飞 ...

  4. 有上下界网络流 ---- P4843 清理雪道(DAG图上最小路径重复边覆盖)【模板】有源汇上下界最小流

    题目链接 题目大意: 解题思路: 首先我们发现对于每条边至少要覆盖一次,最多覆盖无数次 那么就有点像上下界网络流了[1,INF][1,INF][1,INF]的限制关系 跑一边最小流就可以了!! #in ...

  5. [BZOJ2502]清理雪道

    [BZOJ2502]清理雪道 试题描述 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定 ...

  6. HDU 3157 Crazy Circuits(有源汇上下界最小流)

    HDU 3157 Crazy Circuits 题目链接 题意:一个电路板,上面有N个接线柱(标号1~N),还有两个电源接线柱 + -.给出一些线路,每一个线路有一个下限值求一个能够让全部部件正常工作 ...

  7. SGU-176 Flow construction 有上下界的最小流

    这里参看了大牛的解题思路,学习了很多.原来上下界流的求法是这么的灵活,尤其我是用的临界表存储的边,删除更新很不方便. http://www.shuizilong.com/house/archives/ ...

  8. 【有源汇点上下界最小流】[SGU176]Flow construction

    题目大意 给出N个点,M条有向边 如果有向边的标号是1的话,就表示该边的上界下界都为容量 如果有向边的标号为0的哈,表示该边的下界为0,上界为容量 现在问,从1到N的最小流是多少,并输出每条边的流量 ...

  9. LOJ - #117. 有源汇有上下界最小流(有源汇有上下界的最小流)

    题目链接:点击查看 题目大意:给出一个 n 个点和 m 条边的有向图,每条边都有一个流量限制 [ lower , upper ],给定源点 s 和汇点 t ,求出源点到汇点的最小流 题目分析:参考我的 ...

最新文章

  1. spring+ (activeMQ) 实现queue与topic
  2. BeautifulSoup学习笔记
  3. js函数 Number()、parseInt()、parseFloat()的区别:
  4. css3实现流星坠落效果
  5. asp.net 分布式应用开发
  6. 面试官问我:如何在 Python 中解析和修改 XML
  7. 教育部:“改薄”工程实施中预防拖欠农民工工资
  8. STM32之外部中断
  9. Java中Object转Map类型,Map转Object类型
  10. ASP.NET简化编辑界面 V2
  11. 为什么JavaScript中给变量赋值会影响到其他地方?
  12. 挑战程序设计竞赛 练习日记
  13. 关于ILRunTime + FGUI 组合使用的补充
  14. 3559A对接IMX577 4lane 12M
  15. 利用scrapy爬取美图录网站图集按模特姓名存储到本地(三)
  16. BGP带宽是什么意思
  17. 这场乌镇互联网饕餮盛宴,大佬们都说了啥?
  18. 【unity】Google 登录和Google支付接入unity
  19. 跨越AI大门,一本翻译蓝皮书、一场人机共译比赛投射出怎样的未来?
  20. matlab数据归一化(补充),matlab数据归一化(补充)

热门文章

  1. Android的Framework分析---4硬件抽象HAL
  2. Java程序内存分析
  3. CSS + DIV 让页脚始终底部
  4. @Repository、@Service、@Controller 和 @Component
  5. 关于P2P流量的识别方式
  6. WLST - Presentation Transcript
  7. javaMe开发按钮
  8. 1 关于数据仓库维度数据处理的方法探究系列——维的概述
  9. Wifitap是一个WiFi注入工具集常用命令集合大学霸IT达人
  10. Kali Linux 64位架构安装Veil-Evasion