题意描述:
有一个n个点m条边的二分图,通过加边使得这张图变成一个边数最多的完全二分图. 最多能够新加多少条边. 注意重边是不允许的.解题思路:
1、先对二分图染色(dfs),统计二分图中每个连通块(注意:这个二分图并不一定连通)中黑色和白色的数量(黑、白是相对的,不同连通块之间的黑、白没有联系);
2、从每个连通块中选出黑或白的数量作为整个二分图中白色的那组,根据题目描述我们只需要找到怎样分组才能使完全二分图的边数最多(显然对于总共n个顶点的
二分图,如果两组顶点各一半时能使总的边数最大),因此我们可以使用dp得出各种分组情况。
3、由于数据10000,此处采用bitset进行优化,通过bitset运算dp出所有可能的分组情况,然后取其中使总的边数最大的情况即可
#include <cstdio>
#include <cstring>
#include <vector>
#include <