根据定点度数建图--最大流算法

遇到下面一个题目

给出一个有向图的各个点的in-degree和out-degree的时候 怎样求得这个图的边的情况?

答案是:
1.把所有的in-degree和所有的out-degree相加,如果不相等 则此图无法建成 输出impossible
2.如果可能建 立即得出边应该为 M = sum(in-degree) 因为每条边必然导致 indegree+1
3.对这个M条边做分配 如何分配呢? 如下方案可满足要求:
最大流算法

1.将每个点化成入点和出点(1分为2)
由于对于有向图中的边是从A的出点到B的入点 所以应该如下建图:
2.引出source从所有有向图中的点的出点的边 权为out-degree
3.引出所有有向图中的点的入点的边到sink的边 权为 in-degree
4.引出所有有向图任一点到另一点的边 权统一为1(在没有重边的题目要求下)
5.执行最大流算法 如果得到 M 的最大流 则满足题意 输出所有这些边
(如是从B点的出点到A的入点 则输出B->A)

你可能感兴趣的:(根据定点度数建图--最大流算法)