摘要:
Edmonds-Karp算法是最简单的网络流算法,比较慢,时间复杂度为O(V*E^2)。具体思路可以参考算法导论。此算法用广度优先搜索寻找增光路的,代码写起来比较简单。代码:View Code 1 #include <iostream> 2 #include <queue> 3 #include <stdio.h> 4 #include <memory.h> 5 using namespace std; 6 const int maxnum=201; 7 const int maxdata=0x7fffffff; 8 int f[maxnum][ 阅读全文
摘要:
题意:经典的图的染色问题,求对于给定的无向图中,给每个结点染两种不同颜色(黑色和白色)的一种且相邻结点的颜色不同,求染成黑色的最多结点数。分析:这个题求的图的最大独立集,最大独立集即为黑色节点的个数。由于原图的最大独立集=补图的最大团。而这个题是普通图,所以用回溯法来做,时间复杂度O(n*2^n)代码:View Code 1 #include <iostream> 2 #include <memory.h> 3 #include <stdio.h> 4 using namespace std; 5 6 const int maxnum=101; 7 bool 阅读全文
摘要:
题意:已知班级有g个女孩和b个男孩,所有女生之间都相互认识,所有男生之间也相互认识,给出m对关系表示哪个女孩与哪个男孩认识。现在要选择一些学生来组成一个团,使得里面所有人都认识,求此团最大人数。思路:最大团问题。定理:原图的最大团=补图的最大独立集原图的最大独立集=补图的最大团。由于这个题的补图显然是一个二分图,而二分图的补图的最大独立集可以由匈牙利算法求的,所以该题的最大团问题可以转化成补图的最大独立集来做。代码:View Code 1 #include <iostream> 2 #include <stdio.h> 3 #include <memory.h&g 阅读全文