随笔分类 -  网络流

摘要:"传送门" 这题有个坑点(好吧是我第一次做这类题没有感觉)。就是一本书只能用一次,也就是这个点带有点容量,所以需要进行拆点。 cpp include include include include define MAXN 20005 define INF 2147483647 struct edge 阅读全文
posted @ 2019-02-02 12:04 Neworld1111 阅读(185) 评论(0) 推荐(0)
摘要:"传送门" 某个方格如果选了,那么其周边的四个方格都不能选,有点二分图染色的味道。 考虑建立一个二分图。源点向$x+y$是奇数的连边,是偶数的向汇点连边。 然后根据最大和 = 全局和 舍弃和 = 全局和 最大流,求解 可以理解为在这个二分图中存在一个简单割,有一些点就被舍弃掉了,剩下的点就是我们要需 阅读全文
posted @ 2019-02-02 11:19 Neworld1111 阅读(131) 评论(0) 推荐(0)
摘要:"传送门" 一道最大权闭合子图的题目。直接建图跑dinic就行了,答案为正权点 最大流。 那剩下的问题就是如果知道哪些点被选进最大权闭合子图。 我们知道一个简单割对应了一个闭合子图,当这个简单割是最小割,即最大流,其与$s$相关的点即为闭合子图。 阅读全文
posted @ 2019-02-01 20:33 Neworld1111 阅读(175) 评论(0) 推荐(0)
摘要:最大权闭合子图 对于最大权闭合子图的理论学习并且补充一部分网络流的笔记 有向图中若干个点组成的一个集合$V$,集合$V$的所有出边所连的点也都属于$V$,这些点构成的图即为闭合子图 点有点权,最大权闭合子图即为权值和最大的闭合子图 Solution 建图 建立超级源点$s,t$ $s$向所有 点权为 阅读全文
posted @ 2019-02-01 00:01 Neworld1111 阅读(251) 评论(0) 推荐(0)
摘要:"传送门" 这应该是比裸的一个网络流/二分图匹配了。 直接跑一遍Dinic求出最大流。再依次遍历所有二分图上的边,如果剩余流量是0,则说明两者相互匹配,作为一组输出。 cpp include include include include define MAXN 205 define MAXM 20 阅读全文
posted @ 2019-01-05 18:43 Neworld1111 阅读(140) 评论(0) 推荐(0)
摘要:建立一个超级源点和超级汇点,点与点之间的容量均为1,因为一个点只能匹配一个点,源点向所有左边的点连边,汇点向右边的点连边。最后网络的最大流即为最大匹配。 cpp include include include define MAXN 2005 struct queue { int q[MAXN],h 阅读全文
posted @ 2018-12-29 20:07 Neworld1111 阅读(329) 评论(0) 推荐(0)
摘要:网络最大流 DInic cpp include include include define MAXN 10005 define MAXM 100005 define INF 2147483647 struct queue { int q[MAXN]; int head,tail; queue() 阅读全文
posted @ 2018-12-23 13:26 Neworld1111 阅读(130) 评论(0) 推荐(0)