【Luogu1344】追查坏牛奶(最小割)

题面

洛谷

题解

裸的最小割,但是要求边的数量最小。

怎么办呢?给每条边的权值额外加上一个很大的值就了。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<queue>
  4. using namespace std;
  5. #define ll long long
  6. #define pls 2000000001
  7. #define MAX 50
  8. inline int read()
  9. {
  10. int x=0;bool t=false;char ch=getchar();
  11. while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
  12. if(ch=='-')t=true,ch=getchar();
  13. while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
  14. return t?-x:x;
  15. }
  16. struct Line{int v,next;ll w;}e[3000];
  17. int h[MAX],cnt=2;
  18. inline void Add(int u,int v,ll w)
  19. {
  20. e[cnt]=(Line){v,h[u],w};h[u]=cnt++;
  21. e[cnt]=(Line){u,h[v],0};h[v]=cnt++;
  22. }
  23. int n,m,S,T;
  24. int level[MAX];
  25. bool bfs()
  26. {
  27. for(int i=S;i<=T;++i)level[i]=0;
  28. queue<int> Q;Q.push(S);level[S]=1;
  29. while(!Q.empty())
  30. {
  31. int u=Q.front();Q.pop();
  32. for(int i=h[u];i;i=e[i].next)
  33. if(!level[e[i].v]&&e[i].w)
  34. level[e[i].v]=level[u]+1,Q.push(e[i].v);
  35. }
  36. return level[T];
  37. }
  38. ll dfs(int u,ll flow)
  39. {
  40. if(u==T||!flow)return flow;
  41. ll ret=0;
  42. for(int i=h[u];i;i=e[i].next)
  43. {
  44. int v=e[i].v;ll d;
  45. if(e[i].w&&level[v]==level[u]+1)
  46. {
  47. d=dfs(v,min(flow,e[i].w));
  48. ret+=d;flow-=d;
  49. e[i].w-=d;e[i^1].w+=d;
  50. }
  51. }
  52. return ret;
  53. }
  54. ll Dinic()
  55. {
  56. ll ret=0;
  57. while(bfs())ret+=dfs(S,1e18);
  58. return ret;
  59. }
  60. int main()
  61. {
  62. n=read();m=read();S=1;T=n;
  63. for(int i=1;i<=m;++i)
  64. {
  65. int u=read(),v=read(),w=read();
  66. Add(u,v,w+pls);
  67. }
  68. ll ans=Dinic();
  69. printf("%lld %lld\n",ans%pls,ans/pls);
  70. return 0;
  71. }

【Luogu1344】追查坏牛奶(最小割)的更多相关文章

  1. Luogu1344 追查坏牛奶 最小割

    题目传送门 题意:给出$N$个节点$M$条边的有向图,边权为$w$,求其最小割与达到最小割的情况下割掉边数的最小值.$N \leq 32,M \leq 1000,w\leq 2 \times 10^6 ...

  2. luogu 1344 追查坏牛奶(最小割)

    第一问求最小割. 第二问求割边最小的最小割. 我们直接求出第二问就可以求出第一问了. 对于求割边最小,如果我们可以把每条边都附加一个1的权值,那么求最小割是不是会优先选择1最少的边呢. 但是如果直接把 ...

  3. USACO 4.4.2 追查坏牛奶 oj1341 网络流最小割问题

    描述 Description 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候,有三聚氰胺的牛奶已经进入了送货网.这个送货网很大,而且关 ...

  4. [USACO Section 4.4]追查坏牛奶Pollutant Control (最小割)

    题目链接 Solution 一眼看过去就是最小割,但是要求割边最少的最小的割. 所以要用骚操作... 建边的时候每条边权 \(w = w * (E+1) + 1;\) 那么这样建图跑出来的 \(max ...

  5. 洛谷 P1344 追查坏牛奶Pollutant Control —— 最小割

    题目:https://www.luogu.org/problemnew/show/P1344 就是求最小割: 但是还要边数最小,所以把边权都*1001+1,这样原来流量部分是*1001,最大流一样的不 ...

  6. USACO Section 4.4 追查坏牛奶Pollutant Control

    http://www.luogu.org/problem/show?pid=1344 题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件 ...

  7. 洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control 解题报告

    P1344 [USACO4.4]追查坏牛奶Pollutant Control 题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候 ...

  8. 洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control

    题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候,有三聚氰胺的牛奶已经进入了送货网.这个送货网很大,而且关系复杂.你知道这批牛 ...

  9. BZOJ 1391: [Ceoi2008]order [最小割]

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1509  Solved: 460[Submit][Statu ...

随机推荐

  1. Scala--包和引入

    一.包 同一个包可以定义在多个文件中,你也可以在同一个文件中定义多个包 文件名为:pack.scala package com{ package scala{ package test{ class ...

  2. 20155213免考项目——简易的HIDAttack

    20155213免考项目--简易的HIDAttack 听5214说他做不出来自己的免考项目,于是就转向bof进阶,并且成功做出了64位的ROP攻击...... 既然如此,那我就再做一个吧,但都已经期末 ...

  3. mfc CListCtrl 报表格式

    知识点: CListCtrl报表格式 CListCtrl报表格式添加列 CListCtrl报表格式添加行 CListCtrl报表格式设置单元格 一.CListCtrl报表格式 类名:SysListVi ...

  4. 07-django项目

    1.sql注入,xss攻击,csrf, sql注入 把sql命令插入到web表单,然后提交到所在页面请求,从而达到欺骗服务器执行恶意的sql命令 解决方法:不要使用动态拼接sql,把指令和数据分开,参 ...

  5. 4字节emoji表情对应的Unicode编码获取和编码转换

    GitHub Flavored Markdown 今天研究了一天Markdown移动端和pc端统一实现方式,由于以前有搞过移动端富文本编辑器,搞Markdown简单多了: 其中GFM的表情语法不错,比 ...

  6. mvc5.0-路由

    :first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdow ...

  7. 【原】python3.7 无法pip安装提示ssl错误解决方案

    问题 pip is configured with locations that require TLS/SSL, however the ssl module in Python is not av ...

  8. jmeter:正则表达式的使用

    Jmeter中正则关联的使用是可以提取动态变化数据进行传递:关联的方式和提取器有多种,这篇先讲解正则表达式怎么来关联(?) 在需要获取数据的http请求上添加后置处理器 比如提取百度title值: 正 ...

  9. 关于UNITY学习,给新生建议

    没有不可能,只有不努力. 本人自学UNITY,实力不敢称最好,但绝对不是小白,自己独立做出过游戏,AR.(用C#) 1. 导入模型一定要注意坐标,否则会很麻烦.本人因为这个吃了很多盐 2. 学unit ...

  10. Java 8 新特性---------Stream

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象 ...