摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3182 最大点权独立集。算法是建立网络流模型,加源汇点s和t,源点s向x集合中的每个点建立边,容量为点的权值,y集合的每个点向汇t建立边,容量为点的权值,然后x集合和y集合相关联的点建立边,容量为INF。最后求最小割就可以了,所有点的权值之和减去最小割就是最大权值,独立点集就是全集减去最小割的点集。为什么是这样的呢?其实每条增广路代表的就是一条相关联的边,找到一条增广路我们就删除一个点,如果找不到增广路了,那么剩下的点就是独立的了。由于是最小割,那么删除的点集... 阅读全文
posted @ 2012-12-15 17:15 zhsl 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2135 很容易看出来时最小费用流,但这里要注意是无向边,所以要建立两条边。为了满足退流时,花费还是最小,反向边的花费要为相反数。 1 //STATUS:G++_AC_32MS_980KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<alg 阅读全文
posted @ 2012-12-15 01:27 zhsl 阅读(210) 评论(0) 推荐(0) 编辑