• All Friends 极大团


    搞懂了什么是团  什么是极大团  什么是最大团 

    极大团就是  不是任何团的真子集  最大团就是点数最多的极大团

    这题就是求极大团的个数 

    用bk算法

    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <map>
    
    #include <stack>
    #include <cstring>
    #include<cstdio>
    
    using namespace std;
    
    int n,m;
    int ans;
    int G[200][200];
    int all[200][200];//第j个极大团所包含的节点
    int some[200][200];
    int none[200][200];
    
    void dfs(int x,int an,int sn,int nn){
        if(!sn&&!nn){
            ans++;
            //输出极大团
            // for(int i=1;i<=an;i++)
            //     cout<<all[x][i]<<" ";
            // cout<<endl;
        }
        if(ans>1000)
            return;
    
        int key=some[x][1];
        for(int j=1;j<=sn;j++){
            int v=some[x][j];
            int tsn=0;
            int tnn=0;
    
            //剪枝,与key相连的,必被搜索过
            if(G[key][v])
                continue;
    
            for(int i=1;i<=an;i++)
                all[x+1][i]=all[x][i];
            all[x+1][an+1]=v;
    
            for(int i=1;i<=sn;i++)
                if(G[v][some[x][i]])
                    some[x+1][++tsn]=some[x][i];
    
            for(int i=1;i<=nn;i++)
                if(G[v][none[x][i]])
                    none[x+1][++tnn]=none[x][i];
    
            dfs(x+1,an+1,tsn,tnn);
    
            some[x][j]=0;
            none[x][++nn]=v;
        }
    
    }
    
    int main()
    {
    
        while(~scanf("%d%d",&n,&m)){
            ans=0;
            memset(G,0,sizeof(G));
            int a,b;
            for(int i=0;i<m;i++){
                scanf("%d%d",&a,&b);
                G[a][b]=1;
                G[b][a]=1;
    
            }
    
            for(int i=1;i<=n;i++)
                some[1][i]=i;
    
            dfs(1,0,n,0);
    
            if(ans > 1000)
                puts("Too many maximal sets of friends.");
            else
                printf("%d
    ", ans);
    
    
        }
    
        return 0;
    
    }
  • 相关阅读:
    java基础-Runnable与Callable
    java基础-Reference三
    java基础-Reference二
    java基础-Reference一
    jvm-gc
    jvm-简介
    java基础-enum
    采购申请->MRP
    消耗性物料采购注意事项
    供应商建立的相关配置
  • 原文地址:https://www.cnblogs.com/bxd123/p/10389331.html
Copyright © 2020-2023  润新知