hdu 5952 Counting Cliques(最大团思想+dfs)

来源:互联网 发布:七天骗局 知乎 编辑:程序博客网 时间:2024/06/08 00:54

虽然是暴搜,但是也用到了最大团思想的

代码:

#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;}


0 0
原创粉丝点击