题目链接

第一道最大流,赤裸裸的模版题,刚好可以熟悉模版用。今天看了一下最大流,就看了一个EK算法,感觉有点和二分图匹配算法有点相似,对于最大流问题有点了解了,不过为什么这么做,也不是 很懂,只是把代码给敲了一遍,以后慢慢学习。

EK算法,过程是先BFS找到str到end的一条路,然后每条路上的流量(key[][]记录)取这些路中流量的最小值(flow[]记录),在这条路上的流量都减去这个值,然后建立反向边,然后继续找增广路,直到找不到为止。有前驱的结点不会再找了,所以几遍之后肯定找不到了。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <string>
 4 #include <cmath>
 5 #include <queue>
 6 using namespace std;
 7 #define INF 0x7fffffff
 8 int key[101][101];
 9 int path[101],flow[101],n,m,str,end;
10 queue<int>que;
11 int bfs()
12 {
13     int i,t;
14     while(!que.empty()) que.pop();
15     memset(path,-1,sizeof(path));
16     path[str] = 0;
17     flow[str] = INF;//初始化
18     que.push(str);
19     while(!que.empty())//BFS
20     {
21         t = que.front();
22         que.pop();
23         if(t == end) break;//已经找到end了
24         for(i = 1;i <= n;i ++)
25         {
26             if(i != str&&key[t][i]&&path[i] == -1)
27             {
28                 flow[i] = flow[t] < key[t][i] ? flow[t]:key[t][i];//记录流量
29                 que.push(i);
30                 path[i] = t;//记录前驱
31             }
32         }
33     }
34     if(path[end] == -1)//找不到路径时
35     return -1;
36     else
37     return flow[end];
38 }
39 int EK()
40 {
41     int ans = 0,pre,now,step;
42     while((step = bfs()) != -1)
43     {
44         ans += step;
45         now = end;
46         while(now != str)
47         {
48             pre = path[now];
49             key[now][pre] += step;
50             key[pre][now] -= step;
51             now = pre;
52         }
53     }
54     return ans;
55 }
56 int main()
57 {
58     int i,t,sv,ev,w,num = 0;
59     scanf("%d",&t);
60     while(t--)
61     {
62         num ++;
63         memset(key,0,sizeof(key));
64         scanf("%d%d",&n,&m);
65         for(i = 1;i <= m;i ++)
66         {
67             scanf("%d%d%d",&sv,&ev,&w);
68             key[sv][ev] += w;
69         }
70         str = 1;end = n;
71         printf("Case %d: %d\n",num,EK());
72     }
73     return 0;
74 }

转载于:https://www.cnblogs.com/naix-x/archive/2012/11/20/2779611.html

HDU 3549 Flow Problem(最大流模版EK算法)相关推荐

  1. HDU 3549 Flow Problem

    网络最大流模版题,用了(Ford-Fulkerson算法)  代码不贴了,模版见我博客 http://www.cnblogs.com/zufezzt/p/4585752.html 转载于:https: ...

  2. HDU 3549 Flow Problem (dinic模版 isap模版)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 题意: 给你一个有向图,问你1到n的最大流. dinic模版 (n*n*m) 1 #includ ...

  3. hdu 3549 Flow Problem(最大流模板题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Problem Description Network flow is a well-known ...

  4. 网络流--最大流--HDU 3549 Flow Problem

    题目链接 Problem Description Network flow is a well-known difficult problem for ACMers. Given a graph, y ...

  5. HDU 3549 Flow Problem (网络流板子)

    Dinic 邻接表 (抄袭神牛的板子 传送门:https://blog.csdn.net/u013480600/article/details/38796521) 代码: #include <s ...

  6. [hdu3549]Flow Problem(最大流模板题)

    解题关键:使用的挑战程序设计竞赛上的模板,第一道网络流题目,效率比较低,且用不习惯的vector来建图. 看到网上其他人说此题有重边,需要注意下,此问题只在邻接矩阵建图时会出问题,邻接表不会存在的,也 ...

  7. Poj(1459),最大流,EK算法

    题目链接:http://poj.org/problem?id=1459 Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Su ...

  8. hdu 3549 最大流(EK实现)

    Problem: http://acm.hdu.edu.cn/showproblem.php?pid=3549 题目都直接说求最大流了,还需要做什么 数据这么弱,直接套最大流模版 #include&l ...

  9. 图论 —— 网络流 —— 最大流 —— FF 算法与 EK 算法

    [概述] FF 算法与 EK 算法是求解最大流的一般增广路方法,其时间复杂度均为 O(n*m*m) Ford-Fulkerson 算法是求解最大流的最基础的算法,其核心思想是增广路定理:网络达到最大流 ...

最新文章

  1. 一家创业公司的5年架构变迁史
  2. ATG中的定时Job处理
  3. MongoDB学习系列6: mongodump
  4. 如何让MFC编写的应用程序(用VC6.0开发)能在别的电脑上运行
  5. Visual Studio 2017 Android 调试无法连接到虚拟机
  6. 团队行为心理学读书笔记(2)招聘背后的心理学
  7. oracle查看jdk文档_Oracle JDK 9 Early Access文档已更新
  8. DateTime字段控件值显示短格式的做法
  9. 《Java从入门到放弃》框架入门篇:hibernate中的多表对应关系(二)
  10. 嵌入式Linux内核,文件系统的制作
  11. 手机喇叭积灰,一段音波就能清理干净
  12. APPInventor网络数据库浏览器(TinyWebDB查询API)
  13. 用友t6服务器端操作系统,用友t6远程服务器
  14. 基于WMI获取USB设备信息(即获取插即用设备信息)System.Management.ManagementObjectSearcher--ManagementObjectCollection
  15. 聚类分析(K-means算法)
  16. 获取实时手机验证码并同步到邮箱服务器
  17. 技术丨说一说微信第三方平台的初步集成
  18. 为什么毕业论文要查重?
  19. 手绘日漫版的新垣结衣见过没?这个开源动漫生成器让你的照片秒变
  20. Python开源项目目录结构参考

热门文章

  1. docker上你必须会的那些命令
  2. php rabbmq教程_RabbitMQ+PHP 教程一(Hello World)
  3. Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)
  4. linux环境下快速配置hadoop集群免密登录
  5. Maven Eclipse Run as 命令
  6. os.environ[CUDA_DEVICE_ORDER] = PCI_BUS_ID os.environ[CUDA_VISIBLE_DEVICES] = 0
  7. AI中pass架构设计优化
  8. 使用Apache TVM将机器学习编译为WASM和WebGPU
  9. deeplearning算法优化原理
  10. MindInsight训练可视整体设计介绍