![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分图
TSOI_Vergil
这个作者很懒,什么都没留下…
展开
-
BZOJ 1191 匈牙利算法
一道比较明显的二分图匹配。。。我们可以把问题和锦囊妙计看成两个点集,将问题与它所能使用的锦囊妙计连一条有向边,然后在二分图中用匈牙利算法求最大匹配 #include #include #include using namespace std; #define maxn 10005 int pre[maxn],last[maxn],other[maxn]; int link[maxn],l,n,m原创 2016-08-16 08:14:26 · 429 阅读 · 0 评论 -
BZOJ 1059 二分图匹配
首先我们可以知道,交换行或交换列只会改变这一行或列的颜色顺序,并不会改变它的颜色,那么题目中要求做的就是在每一行中找到一个黑格子,并使这些黑格子在不同的列中。这样我们就没必要再去考虑交换了,因为一旦满足上述条件,就一定有解,我们可以构造出有解的情况,那么我们就可以将行和列建立二分图,做一次二分图匹配来判断 #include #include #include using namespace st原创 2016-08-17 11:35:34 · 270 阅读 · 0 评论 -
UVA 11396
这道题看的我一头雾水,看了题解以后理解了半天,我们考虑对于每个点来说,要么它是中心节点,要么它是边缘节点,它不可能既是一个中心节点又是一个边缘节点,因为每个点的度数均为3,如果它是边缘节点,那它已经有一条边连向了中心节点,只剩两条边,不可能再作为中心节点,那多余的边怎么办呢?只能留给其他的中心节点去连,这样的话我们发现每一条边都是连接了中心节点和边缘节点,那如果能爪分解那它一定是二分图,由于题目保原创 2016-10-26 21:36:02 · 1035 阅读 · 0 评论 -
BZOJ 4554
这道题是一道经典的二分图匹配问题,我们可以把每一横行,每一纵列的连通块求出来,对于每一个不是硬石头的位置,我们把它所属于的横连通块和纵连通块连一条边,最后求一遍最大匹配,表示横连通块与纵连通块间2选1。 #include #include #include using namespace std; #define maxn 100005 int flag[maxn],link[maxn],l;原创 2016-10-19 15:20:17 · 422 阅读 · 0 评论