OldBridges

作者:陈通

关键词:网络流

试题来源

Topcoder SRM 556 Div1 1000

试题大意

有一个包含个点的图,点的编号分别为。有若干双向边连接两个点,有些边可以经过无限次,有些边最多只能经过(双向)两次。Alice计划从进行次往返旅行(一次往返旅行即从,在从回到)。与此同时,Bob也计划从进行次往返旅行。请问是否存在一种方案,使得同时满足两人的计划。

算法介绍

算法一

可以发现由于所有的边均为双向边,所以对于一次往返旅行,可以拆成2条的路径。

首先考虑只有一个人(Alice)的情况。可以使用网络流求解。对于可无限经过的边,即在两点建立容量均为正无穷的正向和反向边;对于最多经过两次的边,即在两点建立容量均为的正向和反向边。从求出最大流,判断最大流量与的大小关系。但我们发现直接将两个人独立的可行方案直接叠加,是不能判断两人同时旅行的可行性的。

我们设从的最大流(源点分别向连容量为的边,向汇点连容量为的边)为,从的最大流为。由于每条边的容量均为偶数(或正无穷),可知最大流中每一条边的流量均为偶数。令(两个网络流的叠加即将每条边的流量叠加)。可知为从的最大流,为从的最大流。

易知,若存在可行方案,的流量与的流量均等于。而若的流量与的流量均等于,对于每一条边即为可行的方案。

所以的流量与的流量均大于等于,为存在可行方案的充分必要条件。

results matching ""

    No results matching ""