虽然是暴搜,但是也用到了最大团思想的
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=105;
int t;
int u,v;
int n,m,a;
int ans;
int map[maxn][maxn];
void clique(int l,int u[],int cnt)
{
int len;
int next[maxn];
if(cnt==a) {ans++;return;}
len=0;
if(!l||l+cnt<a) return;
for(int i=1;i<=l;++i){
len=0;
for(int j=i+1;j<=l;++j){
if(map[u[i]][u[j]]) next[++len]=u[j];
}
clique(len,next,cnt+1);
}
}
int main()
{
scanf("%d",&t);
while(t--){
ans=0;
memset(map,0,sizeof(map));
scanf("%d%d%d",&n,&m,&a);
if(a>n) {printf("0\n");continue;}
for(int i=1;i<=m;++i){
scanf("%d%d",&u,&v);
map[u][v]=1;
map[v][u]=1;
}
int next[maxn];
for(int i=1;i<=n;++i) next[i]=i;
clique(n,next,0);
printf("%d\n",ans);
}
return 0;
}