极大团:无法从图中再加入一个顶点使得此顶点集的顶点两两相连的顶点集
因此单个顶点也可能是一个极大团
最大团:一个包含顶点数最多的极大团
最大独立集=补图的最大团
定理:最大独立集=补图的最大团,最大团=补图的最大独立集
Bron-kerbosch模板
说明
all-已取顶点集,some-未处理顶点集(初始状态是全部顶点),none-不取的顶点集,g-边,
S-极大团数量,ans-最大团结点数;
结点编号1~n,0用于辅助,表示被删除;
求最大团顶点数时只要some;要求记录路径时要all;
求极大团数量要some、none;要求记录路径时要all;
极大团计数
输入:some,g;
输出:S;
调用方法:dfs(0,0,n,0);
some的初始化:for(int I=0; I<n; ++I) some[0][I]=I+1;
复杂度爆炸,可处理一两百个点
POJ 2989 All friends
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;