http://codevs.cn/problem/1993/ (题目链接)

题意

  求有向图最大流。

Solution

  Dinic。

代码

  1. // codevs1993
  2. #include<algorithm>
  3. #include<iostream>
  4. #include<cstring>
  5. #include<cstdlib>
  6. #include<cstdio>
  7. #include<cmath>
  8. #include<queue>
  9. #define LL long long
  10. #define inf 2147483640
  11. #define MOD 10000
  12. #define Pi acos(-1.0)
  13. #define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
  14. using namespace std;
  15.  
  16. const int maxn=210;
  17. struct edge {int to,next,w;}e[maxn<<1];
  18. int d[maxn],head[maxn],cnt=1,ans,n,m;
  19.  
  20. void link(int u,int v,int w) {
  21. e[++cnt]=(edge){v,head[u],w};head[u]=cnt;
  22. e[++cnt]=(edge){u,head[v],0};head[v]=cnt;
  23. }
  24. bool bfs() {
  25. memset(d,-1,sizeof(d));
  26. queue<int> q;q.push(1);d[1]=0;
  27. while (!q.empty()) {
  28. int x=q.front();q.pop();
  29. for (int i=head[x];i;i=e[i].next) if (e[i].w && d[e[i].to]<0) {
  30. d[e[i].to]=d[x]+1;
  31. q.push(e[i].to);
  32. }
  33. }
  34. return d[n]>0;
  35. }
  36. int dfs(int x,int f) {
  37. if (x==n || f==0) return f;
  38. int w,used=0;
  39. for (int i=head[x];i;i=e[i].next) if (e[i].w && d[e[i].to]==d[x]+1) {
  40. w=dfs(e[i].to,min(e[i].w,f-used));
  41. used+=w;
  42. e[i].w-=w;e[i^1].w+=w;
  43. if (used==f) return used;
  44. }
  45. if (!used) d[x]=-1;
  46. return used;
  47. }
  48. void Dinic() {
  49. while (bfs()) ans+=dfs(1,inf);
  50. }
  51. int main() {
  52. scanf("%d%d",&m,&n);
  53. for (int u,v,w,i=1;i<=m;i++) {
  54. scanf("%d%d%d",&u,&v,&w);
  55. link(u,v,w);
  56. }
  57. Dinic();
  58. printf("%d",ans);
  59. return 0;
  60. }

  

  

【codevs1993】 草地排水的更多相关文章

  1. codevs1993 草地排水(最大流)

    1993 草地排水 USACO  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond   题目描述 Description 在农夫约翰的农场上,每逢下雨,Bes ...

  2. codevs1993草地排水(最大流)

    最近学了最大流,于是去codevs找了几道最大流裸题(这是我第一次写网络流). 题目大意:求一个图的最大流(就是这样的裸题) 第一次A网络流的题,发个博客纪念一下. var n,m,i,j,k,h,t ...

  3. POJ1273 USACO 4.2.1 Drainage Ditches CodeVS1993草地排水 网络流 最大流 SAP

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 传送门 - POJ 传送门 - CodeVS 题意概括 给出一个图,告诉你边和容量,起点是1,汇点是n,让你求最大流. 题解 ...

  4. 【codevs1993】草地排水 最大流

    [codevs1993]草地排水 题目描述 Description 在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段 ...

  5. 【USACO】草地排水

    Drainage Ditches 草地排水 usaco 4.2.1描述在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一 ...

  6. [网络流]Drainage Ditches(草地排水)

    Drainage Ditches(草地排水) 题目描述 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰 ...

  7. Codevs 1993 草地排水

    1993 草地排水 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地 ...

  8. codevs 1993草地排水

    1993 草地排水

  9. AC日记——草地排水 codevs 1993

    1993 草地排水 USACO  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 在农夫约翰的农场上,每 ...

  10. - > 网络流(【最大流】草地排水模板题)

    1993 草地排水 USACO  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 在农夫约翰的农场上,每 ...

随机推荐

  1. IntelliJ IDEA 编译maven项目以及运行测试前编译项目

    Maven编译及命令行输出 右侧Maven Projects, 打开, 选取某个Project打开至Lifecycle/package 或其他任何一个lifecycle选项, 在上面右键Run Mav ...

  2. Centos5.8 iptables管理

    使用第三方提供的Centos5.8 vmx安装的虚拟机实例, 在安装Tomcat时发现启动后8080端口无法访问, 先检查是否selinux作了限制 查看selinux状态: sestatus 查看s ...

  3. 51nod lyk与gcd

    1678 lyk与gcd 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 这天,lyk又和gcd杠上了.它拥有一个n个数的数列,它想实现两种操作. 1:将  ai  ...

  4. android values目录的读取优先级

    android项目新建时会有一个values目录(高版本会增加values-v11,values-v14目录),该目录用于存放显示相的配置数据的定义文件,如strings.xml, style.xml ...

  5. listview+seekbar问题的解决

    最近做了个项目,其中有录音播放功能.每次录音结束都会在listView中显示,在listView中能播放每次的录音,也可以每条录音之间的切换播放.随之就引发了许多的问题,比如当我播放第一条录音的时所有 ...

  6. 增强for循环(forearch)

    增强for循环是为了简化在遍历数组需要先获得数组的长度或者在遍历集合中的元素的时候需要使用迭代器的操作. 引入时间:JDK1.5 语法格式: for(数据类型 变量 :需要迭代的数组或者集合){ } ...

  7. ImageMagick常用指令详解

    Imagemagick常用指令 (ImageMagick--蓝天白云) (ImageMagick官网) (其他比较有价值的IM参考) (图片自动旋转的前端实现方案) convert 转换图像格式和大小 ...

  8. Sql server使用Merge关键字做插入或更新操作

    Merge是关于对于两个表之间的数据进行操作的. 要使用Merge的场景比如: 数据同步 数据转换 基于源表对目标表做Insert,Update,Delete操作 MERGE语句的基本语法: MERG ...

  9. VI命令----用于检索

    装了个虚拟机Ubuntu,命令行模式用VI很不适应,需要学习! 1.vi 模式切换: Commond模式: 打开文件的默认模式,用ESC建切换到此模式 Insert模式: 按键:i 在光标前输入 a ...

  10. hiho一下 第六十四周 Right-click Context Menu

    题目链接:hihocoder 第64周 题意概述: 上下文菜单是panel(面板)包括很多section(分区),一个分区里面至少包含一个菜单项.每一个菜单项都对应有一个子panel,这个panel可 ...