题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4280

  1. #pragma comment(linker, "/STACK:1024000000,1024000000")
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<iostream>
  5. #include<algorithm>
  6. #include<queue>
  7. using namespace std;
  8.  
  9. const int maxn = ;
  10. const int maxe = ;
  11. const int INF = 0x3f3f3f;
  12.  
  13. struct Edge{
  14. int v,flow,cap;
  15. int next;
  16. Edge(int v=,int flow=,int cap=,int next=):
  17. v(v) , flow(flow), cap(cap), next(next){}
  18.  
  19. };
  20.  
  21. struct Dinic{
  22. Edge edges[maxe];
  23. int head[maxn],cnt;
  24. int cur[maxn];
  25. int d[maxn];
  26. int vis[maxn];
  27. int s,t;
  28.  
  29. void init(){
  30. memset(head,-,sizeof(head));
  31. cnt = ;
  32. }
  33.  
  34. void addedge(int u,int v,int cap){
  35. edges[cnt] = Edge(v,,cap,head[u]);
  36. head[u] = cnt++;
  37. edges[cnt] = Edge(u,,cap,head[v]);
  38. head[v] = cnt++;
  39. }
  40.  
  41. bool bfs(){
  42. memset(vis,,sizeof(vis));
  43. queue<int> Q;
  44. Q.push(s);
  45. vis[s] = true;
  46. d[s] = ;
  47. while(!Q.empty()){
  48. int u = Q.front(); Q.pop();
  49. for(int i=head[u];i!=-;i=edges[i].next){
  50. Edge& e = edges[i];
  51. if(!vis[e.v] && e.cap > e.flow){
  52. vis[e.v] = true;
  53. d[e.v] = d[u] + ;
  54. Q.push(e.v);
  55. }
  56. }
  57. }
  58. return vis[t];
  59. }
  60.  
  61. int dfs(int u,int res){
  62. if(u == t || res == ) return res;
  63. int flow = ,f;
  64. for(int& i=cur[u];i!=-;i=edges[i].next){
  65. Edge& e = edges[i];
  66. if(d[e.v] == d[u] + && (f = dfs(e.v,min(res,e.cap-e.flow))) > ){
  67. e.flow += f;
  68. edges[i^].flow -= f;
  69. flow += f;
  70. res -= f;
  71. if(res == ) break;
  72. }
  73. }
  74. return flow;
  75. }
  76.  
  77. int MaxFlow(int s_,int t_){
  78. s = s_; t = t_;
  79. int flow = ;
  80. while(bfs()){
  81. for(int i=;i<=maxn;i++) cur[i] = head[i];
  82. flow += dfs(s,INF);
  83. }
  84.  
  85. return flow;
  86. }
  87.  
  88. }solver;
  89.  
  90. int main()
  91. {
  92. freopen("E:\\acm\\input.txt","r",stdin);
  93. int T;
  94. cin>>T;
  95. while(T--){
  96. solver.init();
  97. int N,M;
  98. cin>>N>>M;
  99. int maxx=-INF,minx=INF;
  100. int s,t;
  101. for(int i=;i<=N;i++){
  102. int x,y;
  103. scanf("%d %d",&x,&y);
  104. if(maxx < x){
  105. maxx = x;
  106. t = i;
  107. }
  108. if(minx > x){
  109. minx = x;
  110. s = i;
  111. }
  112. }
  113. for(int i=;i<=M;i++){
  114. int a,b,c;
  115. scanf("%d %d %d",&a,&b,&c);
  116. solver.addedge(a,b,c);
  117. }
  118. printf("%d\n",solver.MaxFlow(s,t));
  119. }
  120. }

hdu 4280 最大流的更多相关文章

  1. hdu 4280 最大流sap

    模板套起来 1 5 7 //5个结点,7个边 3 3 //坐标 3 0 3 1 0 0 4 5 1 3 3 //相连的结点和流 2 3 4 2 4 3 1 5 6 4 5 3 1 4 4 3 4 2 ...

  2. hdu 4280 最大流 sap模板

    给你岛的坐标求最西边到最东边的最大流 /* 最大流模板 sap */ #include<stdio.h> #include<string.h> #include<algo ...

  3. HDU 4280 Island Transport(网络流,最大流)

    HDU 4280 Island Transport(网络流,最大流) Description In the vast waters far far away, there are many islan ...

  4. HDU 4280 Island Transport(无向图最大流)

    HDU 4280:http://acm.hdu.edu.cn/showproblem.php?pid=4280 题意: 比较裸的最大流题目,就是这是个无向图,并且比较卡时间. 思路: 是这样的,由于是 ...

  5. HDU 1532 最大流入门

    1.HDU 1532 最大流入门,n个n条边,求第1点到第m点的最大流.只用EK做了一下. #include<bits/stdc++.h> using namespace std; #pr ...

  6. G - Island Transport - hdu 4280(最大流)

    题意:有N个岛屿,M条路线,每条路都连接两个岛屿,并且每条路都有一个最大承载人数,现在想知道从最西边的岛到最东面的岛最多能有多少人过去(最西面和最东面的岛屿只有一个). 分析:可以比较明显的看出来是一 ...

  7. HDU 4280 ISAP+BFS 最大流 模板

    Island Transport Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  8. Hdu 4280 Island Transport(最大流)

    Island Transport Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  9. Island Transport 【HDU - 4280】【最大流Dinic】

    题目链接 可以说是真的把时间卡爆了,不断的修改了好多次之后才A了,一直T一直T,哭了…… 可以说是很练时间优化了,不断的改,不断的提交,最后竟然是改了Dinic中的BFS()中,我们一旦搜索到了T之后 ...

随机推荐

  1. java开发规范总结_代码注释规范

    规范需要平时编码过程中注意,是一个慢慢养成的好习惯 1.基本规则 1.注释应该使代码更加清晰易懂   2.注释要简单明了,只要提供能够明确理解程序所必要的信息就可以了.如果注释太复杂说明程序需要修改调 ...

  2. 网络解析之XML及JSON

    首先要加入类库GDataXMLNode和JSON 解析本地文件Students.txt <students> <student> <name>汤姆 </nam ...

  3. iOS崩溃报告获取二

    // // JKExceptionHandler.h // JKExceptionHandler // // Created by Jack on 16/9/7. // Copyright © 201 ...

  4. gpfdist工具的初级使用

    gpfdist工具的使用主要两步: 第一步:打开gpfdist服务: gpfdist -d /home/admin -p -l /tmp/gpfdist.log & 参数解释: -d 数据文件 ...

  5. 在win10 64位下编译,提示[C++ Error] E2075 Incorrect project override option: (x86)\borland\cbuilder6\lib\vcl60.csm

    options->compiler  右边有个file name 改下就好了从$(BCB)\lib\vcl60.csm 改为c:\PROGRA~1\borland\CBUILD~1\lib\vc ...

  6. ibatis面试笔记

    ibatis是在结果集与实体类之间进行映射hibernate是在数据库与实体类之间进行映射Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序 ...

  7. 帝国cms 列表页分页样式修改美化【1】

    [1]自己修改帝国cms默认的分页样式(css),这样做的好处是你不用去改动帝国的核心文件,方便以后升级. [2]自己动手去修改帝国的分页(php+css),帝国的分页在e>class>下 ...

  8. VC皮肤库之duilib

    首先是个国产的开源 的,directui 界面库,开放,共享,惠众,共赢,遵循bsd协议,可以免费用于商业项目,目前支持Windows 32 .Window CE.Mobile等平台. Duilib ...

  9. golang_protobuf环境搭建

    搭建golang使用rotobuf使用环境 一 安装protobuf: 1 下载protobuf源码:https://github.com/google/protobuf 2 进入源码目录: ./au ...

  10. 【 UVALive - 5095】Transportation(费用流)

    Description There are N cities, and M directed roads connecting them. Now you want to transport K un ...