这题wa了N次,就是改某个图不改某个图的问题。。
题目大意:
一群人,1表示两个人能联系0表示两个人不能联系,一个起点s一个终点t,问最少删除多少个点能使s到t收不到信息,并且让你给出一组解,要求字典序最小。
简略题解:
显然就是最大流。
把每个点拆成两个点i,i',从i向i'连一条容量为1的边,如果i和j能联系,那么从i'向j连一条容量为无穷的边。从s向s'连一条容量为无穷的边,从t向t'连一条容量为无穷的边。那么求这个网络的最大流就是第一问。
那么如何给出一组解呢,直接dfs是不行的,因为要求字典序了。我用了一个比较shax的办法就是按字典序枚举,然后删点,看最大流是否减小,若减小了那么就记录一下并且把这个点真正删掉。。这样会很慢,然后纠结的跑了500+ms。
其实还可以用dfs会很快,就是每删掉一个点,就从t到s开始dfs一条路径,这条路径包含i’--->i,如果到了说明有解。。我是后来才搜到这种方法的,所以没改。。
附程序: