题意:一张网络中有若干个源点及汇点。点上又最大能承载的流量超过了则会自动丢弃,让你求最大流。

思路:稍微转化一下套一下模版就ok了。ps:刚刚入门网络流0.0只会模版。

这里就讲一下图的转化吧。首先由于在每一点上都有限制所以我们必须把一个点拆成两个点,在两个点当中加一条边,来实现对于点上流量的控制。另外由于是有多个源点+多个汇点。所以我们要认为的加上一个源点使得此点到所有源点都有一条流量为无穷大的边,再人为加一个汇点,使得所有汇点到这一点都有一条流量为无穷大的边。这样一来图就建好了,剩下来的就是套模版了。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <algorithm>
 6 #include <utility>
 7 #include <vector>
 8 #include <queue>
 9 #include <stack>
10 #define INF 500001
11 #define LEN 510
12
13 using namespace std;
14
15 int cap[LEN][LEN], n;
16
17 void debug()
18 {
19     for(int i=0; i<n; i++){
20         for(int j=0; j<n; j++){
21             cout << cap[i][j] << ' ';
22         }cout << endl;
23     }cout << endl;
24 }
25
26 int EK(int s, int t)
27 {
28     int f, flow[LEN][LEN], a[LEN], p[LEN];
29     queue<int> q;
30     memset(flow, 0, sizeof flow);
31     f = 0;
32     while(1){
33         memset(a, 0, sizeof a);
34         a[s] = INF;
35         q.push(s);
36         while(!q.empty()){
37             int u = q.front(); q.pop();
38             for(int v=0; v<n; v++){
39                 if(!a[v] && cap[u][v]>flow[u][v]){
40                     p[v] = u;
41                     q.push(v);
42                     a[v] = min(a[u], cap[u][v]-flow[u][v]);
43                 }
44             }
45         }
46         if(a[t] == 0)break;
47         for(int u=t; u!=s; u = p[u]){
48             flow[p[u]][u]+=a[t];
49             flow[u][p[u]]-=a[t];
50         }
51         f+=a[t];
52     }
53     return f;
54 }
55
56 int main()
57 {
58 //    freopen("in.txt", "r", stdin);
59
60     int vn, vl, m;
61     while(scanf("%d", &vn)!=EOF){
62         memset(cap, 0, sizeof cap);
63         n = 2*vn+2;
64         for(int i=1; i<=vn; i++){
65             scanf("%d", &vl);
66             cap[i<<1][(i<<1)|1] = vl;
67             cap[(i<<1)|1][i<<1] = vl;
68         }
69         scanf("%d", &m);
70         for(int i=0; i<m; i++){
71             int a, b, val;
72             scanf("%d%d%d", &a, &b, &val);
73             cap[(a<<1)|1][b<<1] = val;
74         }
75 //        debug();
76         int ns, ne;
77         scanf("%d%d", &ns, &ne);
78         for(int i=0; i<ns; i++){
79             int v;
80             scanf("%d", &v);
81             cap[0][v<<1] = cap[v<<1][(v<<1)|1];
82         }
83         for(int i=0; i<ne; i++){
84             int v;
85             scanf("%d", &v);
86             cap[(v<<1)|1][1] = cap[v<<1][(v<<1)|1];
87         }
88         int ans;
89         ans = EK(0,1);
90         printf("%d\n", ans);
91     }
92     return 0;
93 }

View Code

转载于:https://www.cnblogs.com/shu-xiaohao/p/3470380.html

uva 10330(最大流)相关推荐

  1. Matrix Decompressing UVA - 11082 最大流 + 输出方案

    传送门 文章目录 题意: 思路: 题意: 给出前iii行的元素和A[i]A[i]A[i],前jjj列的元素B[j]B[j]B[j],让你构造一个矩阵使得其满足前iii行的元素和是A[i]A[i]A[i ...

  2. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

  3. mac下查看mysql端口被占用_MAC下查看端口占用并杀死进程

    Eclipse在Run on Server时,Tomcat是开启的,但是报错,显示8080.8005和8009端口被占用 终端输入 查看所有开启的端口 sudo lsof -i -P | grep - ...

  4. UVA - 10480 Sabotage(最小割-最大流+输出割边)

    题目链接:点击查看 题目大意:给出一张无向图,1为起点,2为终点,删除每条边都需要权值wi,题目需要求将起点与终点分割为两个部分的最小花费,并且输出方案 题目分析:如果不让输出方案的话就是一个裸的最大 ...

  5. UVA - 820 Internet Bandwidth(最大流模板题)

    题目: 思路: 直接套最大流的模板就OK了,注意一下输出的格式. 代码: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define M ...

  6. uva 10594(最小费用最大流)

    题意:在一个无向网络中,告诉你边的容量与费用.现在需要传送d个数据问你你否能传送成功,若成功则最小费用是多少. 思路:显然是最小费用最大流问题,这道题的见图比较简单.只需要添加一个原点费用为D指向1就 ...

  7. UVa 10806 Dijkstra,Dijkstra(最小费用最大流)

    裸的费用流.往返就相当于从起点走两条路到终点. 按题意建图,将距离设为费用,流量设为1.然后增加2个点,一个连向节点1,流量=2,费用=0;结点n连一条同样的弧,然后求解最小费用最大流.当且仅当最大流 ...

  8. Crimewave UVA - 563(最大流)

    传送门:QAQ 题意:就是给你一个二维平面图,然后图上有若干个整数点,问你是否可能每个点都到达边界并且图上任意一点只能被一个点经过且经过一次. 思路:因为每个点只能经过一次,所以我们将每个点拆成两个点 ...

  9. UVA 10480 - Sabotage (最大流)

    这道题的意思要把一个图分成两部分,要把点1和点2分开.隔断每条边都有一个花费,求最小花费的情况下,应该切断那些边. 这题很明显是最小割,也就是最大流.把1当成源点,2当成汇点. 问题是要求最小割应该隔 ...

  10. uva 753(网络流最大流)

    网络流最大流问题,这里使s=0,使s与所有的插头相连,最大通量为1,然后插头和转换器相连,最大通量为1,转换器和转换器相连,因为有无限个,所以为inf,然后转换器和插座连,最大通量为1,插座和t相连, ...

最新文章

  1. SAP HUM 使用HU02去Unpack一个HU
  2. 波形的转换与信号处理
  3. java实现二叉树的构建以及3种遍历方法
  4. [云炬创业基础笔记]创业计划书常见问题
  5. 合理提升WEB前端性能
  6. Python的Wiki
  7. linux 带ifdef运行程序_如何让linux的一段程序代码进入内核态运行
  8. 平流式沉淀池表面负荷怎么计算_竖流式与辐流式沉淀池
  9. 斐讯K2路由器刷固件实现校园网可使用
  10. Logit模型拟合实战案例(Biogeme)
  11. R语言中dim函数_R 语言中的矩阵计算
  12. 269. Alien Dictionary火星语字典(拓扑排序)
  13. 华裔科学家成功解码脑电波 AI直接从大脑中合成语音
  14. pd.read_excel
  15. 工程训练(第一章 关于劳动 )-江苏海洋大学-mooc 答案
  16. (SEED-Lab) ARP Cache Poisoning Attack Lab
  17. 设备管理的常见问题和解决方案
  18. 苹果手机如何分享wifi密码_wifi网速慢被蹭网?用手机一键修改wifi密码,不用求人...
  19. 键盘跟这台计算机连接的前一个usb,键盘跟这台计算机连接的前一个usb设备不正常...
  20. 梯度爆炸与梯度消失是什么?有什么影响?如何解决?

热门文章

  1. 【第四章】 资源 之 4.3 访问Resource ——跟我学spring3
  2. [转载经验] 探亲签证申请
  3. 使用AJAX时出现“Microsoft JScript 运行时错误: 'Sys' 未定义”提示的解决方法
  4. 发点牢骚,关于微软,关于WPF/E
  5. Maxtocode 2.0 试用版发布
  6. Luogu2481 SDOI2010 代码拍卖会 DP、组合
  7. 读EntityFramework.DynamicFilters源码_心得_示例演示02
  8. Scrum项目6.0 和8910章读后感
  9. VS中添加新项 数据选项卡下没有ADO.NET实体数据模型解决方案
  10. vi-vim (十五):显示与设置选项