上回介绍了EP算法,这次来学一个效率更高的算法。我们在做EP算法的时候,每次bfs最多遍历了整个残量网络,但是只找到了一条增广路。所以有可以优化的地方。Dinic算法基于分层图,我们先bfs找到一个合法的有向无环图(图中所有边都有残流,图严格按照拓扑序),然后在这张分层图上通过深度优先搜索找到若干条 ...
分类:
编程语言 时间:
2019-01-09 11:21:55
阅读次数:
270
网络最大流 DInic cpp include include include define MAXN 10005 define MAXM 100005 define INF 2147483647 struct queue { int q[MAXN]; int head,tail; queue() ...
分类:
其他好文 时间:
2018-12-23 15:20:52
阅读次数:
151
题意 最大流模板 思路 Dinic 代码 我放弃了 ...
分类:
其他好文 时间:
2018-12-23 12:00:19
阅读次数:
138
Marriage Match IV Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6230 Accepted Submission(s): 18 ...
分类:
其他好文 时间:
2018-12-22 22:10:58
阅读次数:
189
题目大意: 给你一个无向图$G(V,E)$。 每个顶点都有一个int范围内的整数的标记。 不同的顶点可能有相同的标记。 对于边$(u,v)$,我们定义$Cost(u,v)=mark [u]\ \ xor\ \ mark [v]$。 现在我们知道某些节点的标记了。你需要确定其他节点的标记,以使边的总成 ...
分类:
其他好文 时间:
2018-12-22 14:58:53
阅读次数:
194
题目大意: N个模块 在核A上执行花费a[i] 在核B上执行花费b[i] 有M个模块组合(d1,d2) 若d1模块与d2模块在不同核上执行需多花费w[i] 求执行所有模块所需的最小花费 挑战P237 将问题转化为最小割问题 求得的最小割就是最小花费 那么记在核A上执行的模块集合为S 核B上执行的模块 ...
分类:
其他好文 时间:
2018-12-21 00:57:15
阅读次数:
112
1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int n,m,cnt,tot; 7 int st,ed; 8 int dx[8]={1,1,-1,-1,2,2,-2,-2}; 9 int dy[8]={2,-... ...
分类:
其他好文 时间:
2018-12-19 00:35:59
阅读次数:
150
很容易想到去吧棋盘模型转为二分图。 发现是一个类似行列匹配的问题。 进一步,如果每一个行都可以找到一个列与之配对的话,一定可以通过交换满足要求。 直接dinic求二分图最大匹配即可。 cpp include include include include include include includ ...
分类:
其他好文 时间:
2018-12-05 10:23:47
阅读次数:
158
CF510E. Fox And Dinner https://codeforces.com/contest/510 分析: 由于$a_i 2$, 相邻两个数一定一奇一偶,按奇偶建立二分图。 环上每个点度数都为2,因此只需要找是否每个点都能匹配两个。 建图跑dinic即可。 代码: cpp inclu ...
分类:
其他好文 时间:
2018-12-02 12:22:57
阅读次数:
221
题解: 这题思路就是暴力。。 主要在于分析复杂度? Dinic跑二分图$msqrt(n)$ 这题好像用不到。。 首先这是个匹配问题显然需要利用网络流 考虑第一问 每一次我们就暴力按照志愿顺序加入边 直到二分图匹配数+1 这个复杂度是$(nm)*nm$的(因为一次只增广一条边所以每次是nm的,不过这个 ...
分类:
其他好文 时间:
2018-11-29 17:56:24
阅读次数:
136