1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. #include<queue>
  5. #define N 405
  6. #define INF 0x3f3f3f3f
  7. #define M 200005
  8. using namespace std;
  9. int head[N],cur[N],n,m,S,T,d[N],s,t,sum,ecnt=,lev[N],ans,dec;
  10. queue<int> q;
  11. struct adj
  12. {
  13. int nxt,v,w;
  14. }e[M];
  15. void add(int u,int v,int w)
  16. {
  17. e[++ecnt].v=v;e[ecnt].nxt=head[u];e[ecnt].w=w;head[u]=ecnt;
  18. e[++ecnt].v=u;e[ecnt].nxt=head[v];e[ecnt].w=;head[v]=ecnt;
  19. }
  20. bool bfs()
  21. {
  22. for (int i=;i<=T;i++)
  23. cur[i]=head[i],lev[i]=-;
  24. q.push(S);lev[S]=;
  25. while (!q.empty())
  26. {
  27. int u=q.front();q.pop();
  28. for (int i=head[u],v;i;i=e[i].nxt)
  29. if (lev[v=e[i].v]==- && e[i].w>)
  30. q.push(v),lev[v]=lev[u]+;
  31. }
  32. return lev[T]!=-;
  33. }
  34. int dfs(int u,int flow)
  35. {
  36. if (u==T) return flow;
  37. int ret=,v,delta;
  38. for (int &i=cur[u];i;i=e[i].nxt)
  39. if (lev[v=e[i].v]==lev[u]+ && e[i].w>)
  40. {
  41. delta=dfs(v,min(flow-ret,e[i].w));
  42. if (delta)
  43. {
  44. e[i].w-=delta;e[i^].w+=delta;ret+=delta;
  45. if (ret==flow) break;
  46. }
  47. }
  48. return ret;
  49. }
  50. int main()
  51. {
  52. scanf("%d",&n);
  53. s=n+;t=n+;S=t+;T=S+;add(t,s,INF);
  54. for (int i=,u,v;i<=n;i++)
  55. {
  56. scanf("%d",&u);
  57. while (u--)
  58. {
  59. scanf("%d",&v);
  60. add(i,v,INF-);
  61. d[i]--,d[v]++;
  62. }
  63. }
  64. for (int i=;i<=n;i++)
  65. add(s,i,INF),add(i,t,INF);
  66. for (int i=;i<=n;i++)
  67. if (d[i]>) add(S,i,d[i]);
  68. else if (d[i]<) add(i,T,-d[i]);
  69. while (bfs()) ans+=dfs(S,INF);
  70. for (int i=head[S];i;i=e[i].nxt) e[i].w=e[i^].w=;
  71. for (int i=head[T];i;i=e[i].nxt) e[i].w=e[i^].w=;
  72. sum=e[].w;e[].w=e[].w=;
  73. S=t;T=s;
  74. while (bfs()) dec+=dfs(S,INF);
  75. printf("%d\n",sum-dec);
  76. return ;
  77. }

BZOJ 2502: 清理雪道 | 有上下界最小流的更多相关文章

  1. Bzoj 2502: 清理雪道 有上下界网络流_最小流

    好长时间没有写网络流了,感觉好手生.对于本题,设一个源点 $s$ 和 $t$.1.由 $s$ 向每个点连一条没有下界,容量为无限大的边,表示以该点为起点.2.由每个点向 $t$ 连一条没有下界,容量为 ...

  2. BZOJ2502:清理雪道(有上下界最小流)

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

  3. 【bzoj2502】清理雪道 有上下界最小流

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

  4. BZOJ 2502 清理雪道(有源汇上下界最小流)

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

  5. BZOJ 2502 清理雪道/ Luogu P4843 清理雪道 (有源汇上下界最小流)

    题意 有一个有向无环图,求最少的路径条数覆盖所有的边 分析 有源汇上下界最小流板题,直接放代码了,不会的看dalao博客:liu_runda 有点长,讲的很好,静心看一定能看懂 CODE #inclu ...

  6. BZOJ_2502_清理雪道_有源汇上下界最小流

    BZOJ_2502_清理雪道_有源汇上下界最小流 Description        滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道), ...

  7. BZOJ 2502: 清理雪道

    BZOJ 2502: 清理雪道 标签(空格分隔): OI-BZOJ OI-最小流 OI-上下界网络流 Time Limit: 10 Sec Memory Limit: 128 MB Descripti ...

  8. BZOJ 1458 / Luogu P4311 士兵占领 (上下界最小流 / 直接最大流)

    做法1:上下界最小流 先来一发上下界最小流,思路比较暴力,就是把行和列看作n+mn+mn+m个点,(i,j)(i,j)(i,j)如果能占领就从第iii行向第jjj列连一条边,上界为1下界为0;然后从s ...

  9. P4843 清理雪道(上下界网络流)

    P4843 清理雪道 上下界最小流 我们先搞一遍上下界可行流(转) 回忆上下界最大流的写法:在可行流的残量网络$s\ -\ t$上跑最大流,答案为可行流$+$残量网络的最大流 那么上下界最小流的写法呢 ...

随机推荐

  1. 网站安全检测 漏洞检测 对thinkphp通杀漏洞利用与修复建议

    thinkphp在国内来说,很多站长以及平台都在使用这套开源的系统来建站,为什么会这么深受大家的喜欢,第一开源,便捷,高效,生成静态化html,第二框架性的易于开发php架构,很多第三方的插件以及第三 ...

  2. Jupyter Notebook里面使用Matplotlib画图 图表中文乱码问题

    可查看以下链接: https://blog.csdn.net/ccblogger/article/details/79613335

  3. 牛客暑假多校第六场I-Team Rocket

    一.题意 我们是穿越银河的火箭队....... 给出若干个区间,之后给出若干个点,要求对每个点求出,第一个覆盖点的区间的数量,之后用当前所有点覆盖的区间的序号的乘积结合输入的Y来生成下一位点.最后输出 ...

  4. 41-Individual authentication 模板

    1-创建项目,进入vscode控制台,输出如下命令, uld表示指定mssqllocaldb E:\coding\netcore>dotnet new mvc -au Individual -u ...

  5. Druid单机环境安装指南

    1.下载单机环境必备工具 下载druid-0.10.1-bin.tar.gz和tranquility-distribution-0.8.2.tgz插件 http://druid.io/download ...

  6. JavaScript---设计模式简介

    概念 设计模式(Design pattern)是一套被反复使用.思想成熟.经过分类和无数次实战设计经验的总结的.使用设计模式是为了让系统代码可重用.可扩展.可解耦.更容易被人理解且能保证代码的可靠性. ...

  7. golang log

    自带log模块 写入文件 package main import ( "fmt" "log" "os" ) func main(){ log ...

  8. 云计算之路-阿里云上:奇怪的CPU 100%问题

    这篇博文记录一下6月1日在阿里云上遇到的奇怪的CPU 100%问题,希望多年以后能真相大白. 那天负载均衡(SLB)中只放了1台云服务器(平时都放2台),由于是节假日,虽然只放了一台,但这台服务器的负 ...

  9. VS2013生产过程问题及解决

    TRK0002错误 现象:编译器.链接器交替报错,不能正常生成 环境:Win8.1 + VS2013 + 百度杀毒 解决:退出百度杀毒,重启VS,再进行生成 修订:发现问题依旧,经过多次试验,发现与杀 ...

  10. Android OpenStreetMap(OSM) 使用 osmbonuspack 进行导航

    关于OpenStreetMap的介绍,国内还是很少,csdn上面有一篇,写的不错,我也就不再做重复的事情了. 这里贴出链接地址:http://blog.csdn.net/mad1989/article ...