首页 > 编程语言 >Bron-Kerbosch算法求最大团

Bron-Kerbosch算法求最大团

时间:2022-11-24 06:22:06浏览次数:54  
标签:cnt return int Kerbosch 算法 Bron ans now po

blog

#include <iostream>
#include <cstdio>
using namespace std;
const int N = 44;
bool cn[N][N];
int n,m,x,ans,po[N],cnt[N];
//BK
bool dfs(int x,int cur){
    //cnt[i]表示从i−n这些点的最大团点数
    //po存当前团内的点
    //now表示现在正在搜团内第now个点(注意现在团内只有now−1个点)
    for(int i = x + 1; i <= n; ++i){//[x+1,n]
        if(cur + cnt[i] <= ans) return false;//如果当前团内的点加上要进团的点都不大于ans,直接return
        if(!cn[x][i]) continue;
        int j = 1;
        for(; j < cur; ++j) if(!cn[i][po[j]]) break;
        if(j == cur){//j!=cur那么不能成团
            po[cur] = i;//加入团中
            if(dfs(i,cur + 1)) return true;
        }
    }
    if(cur > ans + 1){//更新
        ans = cur - 1;
        return true;
    }
    return false;
}
int main(){
    scanf("%d%d%d",&n,&m,&x);
    for(int i = 1,x,y; i <= m; ++i){
        scanf("%d%d",&x,&y);
        cn[x][y] = cn[y][x] = true;
    }
    for(int i = n; i > 0; --i){
        po[1] = i;
        dfs(i,2);
        cnt[i] = ans;
    }
    printf("%d\n",ans);
    return 0;
}

标签:cnt,return,int,Kerbosch,算法,Bron,ans,now,po
From: https://www.cnblogs.com/Facrt/p/16742561.html

相关文章

  • 快速排序算法
    快速排序算法源代码地址:GitHub-firstsaofan/Data-structure-and-algorithmatdevelop如果觉得样式不好:跳转即可(md文件复制过来有些样式会不一样)原文地址:https://li......
  • 3d激光雷达开发(欧几里得聚类算法)
            图形处理里面有一个聚类算法,叫k-means。基本思想就是默认图像里面有k个区域,每个区域都可以内部聚合、外部松散的组合体,找到了这k个区域,就可以实现图像的分......
  • 代码随想录算法训练营Day08|344. 反转字符串、541. 反转字符串 II、剑指 Offer 05. 替
    代码随想录算法训练营Day08|344.反转字符串、541.反转字符串II、剑指Offer05.替换空格、151.反转字符串中的单词、剑指Offer58-II.左旋转字符串344.反转字符......
  • 8.排序算法
    排序分类  1.内部排序  只将需要处理的所有数据都加载到内存寄存器中(内存)进行排序。  2.外部排序  数据量过大,无法全部加载到内存中,需要借助外部存储(文件......
  • python 操作Oracle 自关联表进行树结构复制算法
     最近一个项目中,用关系型表来存储树型结构,其中有一段树节点复制的算法,典型的递归运用,可作为递归算法参考练习。defCheckItem_GET_ById(self,dataid):"""......
  • 算法练习:求24点
    小学三年级的儿子在玩四个数字求24的游戏,经常来考我。有些还真不是一下子就能想到。python写了个求解的算法,再也不用费脑了。defs6(lstnum):lst=lstnum[:]......
  • 算法练习1
     求n个整数里,连续m个整数乘积最大的一组。如:[1,2,4,5,3,4]m为2时,1,2  2,44,5 5,3 都是连续的两个数,其中4,5的乘积是最大的。下面是我用,列表推导、reduce、列表排序,实现......
  • python贪心算法——以“修理牛棚”题目为例
    [USACO1.3]修理牛棚BarnRepair题目描述在一个月黑风高的暴风雨夜,FarmerJohn的牛棚的屋顶、门被吹飞了好在许多牛正在度假,所以牛棚没有住满。牛棚一个紧挨着另一个......
  • 算法基础:区间合并算法及模板应用
    区间合并⭐写在前面的话:本系列文章旨在复习算法刷题中常用的基础算法与数据结构,配以详细的图例解释,总结相应的代码模板,同时结合例题以达到最佳的学习效果。本专栏面向算法零......
  • tarjan算法
    \(tarjan\)RobertTarjan,计算机科学家,以LCA、强连通分量等算法闻名,同时他还参与了开发斐波那契堆、伸展树的工作。\(Tarjan\)算法是基于深度优先搜索的算法,用于求解图的......