题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1530
题意:
求一个图的最大完全子图
算法:
最大团算法。这是一个NP问题,所以解法是搜索+剪枝
我借鉴了http://blog.csdn.net/leolin_/article/details/7251962 的模板
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
const int maxn = 60;
int mx; //最大团数
int x[maxn], clique[maxn];
int can[maxn][maxn]; //表示在已经确定了经选定的i个点必须在最大团内的前提下还有可能被加进最大团的结点集合
int num[maxn]; //num[i]表示由结点i到结点n构成的最大团的结点数
bool mm[maxn][maxn];
bool dfs(int tot, int cnt)
{
if(tot == 0)
{
if(cnt > mx)