题目链接

网络流入门@_@,此处本人用的刘汝佳的Dinic模板

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int INF = 0x3f3f3f3f;
  5.  
  6. struct Edge
  7. {
  8. int from,to,cap,flow;
  9. };
  10.  
  11. int n,s,t,m;
  12.  
  13. struct Dinic
  14. {
  15. , M = ; //N对应点数
  16.  
  17. vector<Edge> edges;
  18. vector<int> G[N];
  19. bool vis[N];
  20. int d[N];
  21. int cur[N];
  22. void init()
  23. {
  24. ; i<=n; i++)
  25. G[i].clear();
  26. edges.clear();
  27. }
  28. void AddEdge(int from,int to,int cap)
  29. {
  30. edges.push_back((Edge)
  31. {
  32.  
  33. });
  34. edges.push_back((Edge)
  35. {
  36. to,,
  37. });
  38. int w=edges.size();
  39. G[);
  40. G[to].push_back(w-);
  41. }
  42. bool bfs()
  43. {
  44. memset(vis,,sizeof(vis));
  45. queue<int>Q;
  46. d[s] = ;
  47. Q.push(s);
  48. vis[s]=;
  49. while (!Q.empty())
  50. {
  51. int x = Q.front();
  52. Q.pop();
  53. ; i<G[x].size(); i++)
  54. {
  55. Edge e=edges[G[x][i]];
  56. if (!vis[e.to]&&e.cap>e.flow)
  57. {
  58. vis[e.to]=;
  59. d[e.to] = d[x] + ;
  60. Q.push(e.to);
  61. }
  62. }
  63. }
  64. return vis[t];
  65. }
  66. int dfs(int x, int a)
  67. {
  68. ) return a;
  69. ,f;
  70. for (int&i = cur[x] ; i<G[x].size(); i++)
  71. {
  72. Edge& e=edges[G[x][i]];
  73. &&(f=dfs(e.to,min(a,e.cap-e.flow)))>)
  74. {
  75. e.flow+=f;
  76. edges[G[x][i]^].flow-=f; //流量增大意味着净容量减少
  77. flow+=f; //反向边容量表示了正向边的流量
  78. a -= f;
  79. )break;
  80. }
  81. }
  82. return flow;
  83. }
  84. int Maxflow(int s, int t)
  85. {
  86. ;
  87. while (bfs())
  88. {
  89. memset(cur,,sizeof(cur));
  90. flow += dfs(s, INF);
  91. }
  92. // for(int i=1;i<=n;i++)
  93. // for(int j=0;j<G[i].size();j++)
  94. // printf("from:%d to:%d cap:%d flow:%d\n",i,edges[G[i][j]].to,edges[G[i][j]].cap,edges[G[i][j]].flow);
  95. return flow;
  96. }
  97. } g;
  98.  
  99. int main()
  100. {
  101. while(~scanf("%d%d",&m,&n))
  102. {
  103. g.init();
  104. s=;
  105. t=n;
  106. ; i<m; i++)
  107. {
  108. int a,b,c;
  109. scanf("%d%d%d",&a,&b,&c);
  110. g.AddEdge(a,b,c);
  111. }
  112. printf("%d\n",g.Maxflow(s,t));
  113. }
  114. }

nyoj_323:Drainage Ditches(网络流入门)的更多相关文章

  1. POJ 1273 Drainage Ditches (网络流Dinic模板)

    Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...

  2. POJ 1273:Drainage Ditches 网络流模板题

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 63339   Accepted: 2443 ...

  3. HDU1532 Drainage Ditches 网络流EK算法

    Drainage Ditches Problem Description Every time it rains on Farmer John's fields, a pond forms over ...

  4. USACO 4.2 Drainage Ditches(网络流模板题)

    Drainage DitchesHal Burch Every time it rains on Farmer John's fields, a pond forms over Bessie's fa ...

  5. NYOJ 323 Drainage Ditches 网络流 FF 练手

    Drainage Ditches 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Every time it rains on Farmer John's fields, ...

  6. POJ 1273 Drainage Ditches 网络流 FF

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 74480   Accepted: 2895 ...

  7. Drainage Ditches~网络流模板

    Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...

  8. poj 1273 Drainage Ditches 网络流最大流基础

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 59176   Accepted: 2272 ...

  9. POJ-1273Drainage Ditches(网络流入门题,最大流)

    Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This ...

随机推荐

  1. 用C写一个web服务器(四) CGI协议

    * { margin: 0; padding: 0 } body { font: 13.34px helvetica, arial, freesans, clean, sans-serif; colo ...

  2. SpringMVC的form:form表单的使用

    为什么要使用SpringMVC的form:form表单,有两个原因:一是可以更加快捷的完成表单的开发,比如会替你做好数据类型装换等本来需要你自己动手的工作.其次就是能够更加方便的实现表单回显. 首先要 ...

  3. JQuery与js具体使用的区别(不全,初学)

    jQuery能大大简化Javascript程序的编写 要使用jQuery,首先要在HTML代码最前面加上对jQuery库的引用,比如: <script language="javasc ...

  4. gradle 使用总结

    什么是gradle 书面化解释: Gradle可以自动化地进行软件构建.测试.发布.部署.软件打包,同时也可以完成项目相关功能如:生成静态网站.生成文档等. Gradle是一种依赖管理工具. 它和ma ...

  5. 使用Azure Policy(策略)强制实现资源Tag的坑

    Azure的Tag(标记)可以帮助运维人员对云资源分类从而方便地进行计费和资源管理.然而在具体实践中工程师部署云资源的时候常常会忘记给资源做标记打Tag. 针对这个问题,Azure的官方文档建议是可以 ...

  6. [0] Lc.exe 已退出,代码 -1

    可能的原因是:在你的项目中引用了第三方组件,并且这个第三方组件是个商业组件,他在组件的主使用类定义了LicenseProvider(typeof(LicFileLicenseProvider))这个A ...

  7. docker--数据卷与数据卷容器

    docker--数据卷与数据卷容器 1.数据卷: 创建一个volumes的文件夹: [root@docker01 /]# mkdir volumes [root@docker01 /]# ls bin ...

  8. win7中python3.4下安装scrapy爬虫框架(亲测可用)

    貌似最新的scrapy已经支持python3,但是错误挺多的,以下为在win7中的安装步骤: 1.首先需要安装Scrapy的依赖包,包括parsel, w3lib, cryptography, pyO ...

  9. 将Win7系统将默认打开的库改为计算机

  10. php对数组中的键与值进行合并处理

    $res=array(); $re=array_count_values($month); foreach( $re as $k=>$v){ $arr['month_name'] = strva ...