网络流24题
搭配飞行员
题解:
二分图最大匹配,从$S$往每个正驾驶连接一条流量为$1$的边,从每个副驾驶往$T$连接一条流量为$1$的边,两个可以配合的飞行员之间连接一条流量为$1$的边,跑最大流即可。
代码:
1 |
|
太空飞行计划
题解:
最大权闭合子图,设$V’$为$G(V,E)$的一个点集,如果$V$中对于每个点的所有的出边所到达的点也$\in V’$,那么$V’$即为一个闭合子图,最大权闭合子图即为所有的闭合子图中权值和最大的。
定理:从$S$向所有权值为正数的点增加一条等于该点点权的流量的边,从所有权值为负数的点向$T$增加一条等于该点权绝对值流量的边,对于$u(w_{u}>0)$,假设完成$u$需要集合$I_{u}$,则对$v \in I_{u}$连接一条权值流量为$inf$的边,跑一边最小割即可。
意义:割掉$S->u$代表不进行任务$u$,割掉$v->T$代表需要使用$v$,最后$S$可达的即为要选择的。
代码:
1 |
|
最小路径覆盖
题解:
假设$x,y$之间有一条边,则把$x$和$y$分别拆成$x_1,x_2,y_1,y_2$。在$x_1$和$y_2$之间连接一条流量为$1$的边,构造好二分图后答案即为$n-maxmatch$。对于方案的输出,可以利用并查集,对于$x$和$y$,如果流量流经$x->y$,则$x->y$在一条路径上,最后$O(n^2)$输出即可。
代码:
1 |
|