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[][];
int all[][];//第j个极大团所包含的节点
int some[][];
int none[][]; 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>)
return; int key=some[x][];
for(int j=;j<=sn;j++){
int v=some[x][j];
int tsn=;
int tnn=; //剪枝,与key相连的,必被搜索过
if(G[key][v])
continue; for(int i=;i<=an;i++)
all[x+][i]=all[x][i];
all[x+][an+]=v; for(int i=;i<=sn;i++)
if(G[v][some[x][i]])
some[x+][++tsn]=some[x][i]; for(int i=;i<=nn;i++)
if(G[v][none[x][i]])
none[x+][++tnn]=none[x][i]; dfs(x+,an+,tsn,tnn); some[x][j]=;
none[x][++nn]=v;
} } int main()
{ while(~scanf("%d%d",&n,&m)){
ans=;
memset(G,,sizeof(G));
int a,b;
for(int i=;i<m;i++){
scanf("%d%d",&a,&b);
G[a][b]=;
G[b][a]=; } for(int i=;i<=n;i++)
some[][i]=i; dfs(,,n,); if(ans > )
puts("Too many maximal sets of friends.");
else
printf("%d\n", ans); } return ; }
All Friends 极大团的更多相关文章
- POJ 2989 All Friends 极大团计数
POJ 2989 题意:给定一个无向图(节点数小于128)求极大团(不包含在更大的团中)的总数. 对最大团,极大团不熟悉的,建议先阅读最大团搜索问题 ZOJ 1492 再来看本题. 本题数据有限,可以 ...
- hdoj1373 Channel Allocation(极大团)
题意是有若干个接收器,给出每个接收器的相邻接收器.相邻的接收器不能使用同一信号频道.问所需要的信号频道数. 求该无向图的极大团. #include<iostream> #include&l ...
- Codeforces 839E Mother of Dragons(极大团)
[题目链接] http://codeforces.com/contest/839/problem/E [题目大意] 现在有一些点,现在你有k的液体,随意分配给这些点, 当两个点有边相连的时候,他们能产 ...
- POJ1419 & 最大团
题意: 求一个图的最大点独立集.SOL: 转化为补图的最大团,最大团似乎是一个NP问题,那么只好爆搜了. 补一补图论基础,代码不想打了,来自某blog #include <iostream> ...
- BZOJ2744:[HEOI2012]朋友圈(最大团,乱搞)
Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...
- 【HDOJ5952】Counting Cliques(团,dfs)
题意:给定一张n点m边的图,求大小为S的团的个数 N ≤ 100,M ≤ 1000,2 ≤ S ≤ 10,保证点的度不超过20 思路:dfs 因为每个点可能不止属于一个极大团,所以不能求出极大团然后计 ...
- hdu1530 求最大团
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1530 求最大团裸题. 模板:maxx即为所求的最大团的值. #include<iostream& ...
- 最大团&稳定婚姻系列
[HDU] 1530 Maximum Clique 1435 Stable Match 3585 maximum shortest distance 二分+最大团 1522 Marriage is ...
- poj1419 Graph Coloring 最大独立集(最大团)
最大独立集: 顶点集V中取 K个顶点,其两两间无连接. 最大团: 顶点集V中取 K个顶点,其两两间有边连接. 最大独立集=补图的最大团最大团=补图的最大独立集 #include<iostream ...
随机推荐
- 【UOJ#67】新年的毒瘤(Tarjan)
[UOJ#67]新年的毒瘤(Tarjan) 题面 UOJ 题解 一棵\(n\)个节点的树显然有\(n-1\)条边,在本题中意味着删去一个点之后还剩下\(n-2\)条边.那么找到所有度数为\(m-(n- ...
- c++并发编程之原子操作的实现原理
原子(atomic)本意是”不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作”. 处理器如何实现原子操作 (1) 使用总线锁保证原子性 如 ...
- 口琴练习部分 - 多孔单音奏法 & 简单伴奏
多孔单音奏法(口含5个孔) 加入伴奏 理论知识 - 盖住 理论知识 - 松开 舌头一抬一合形成一个伴奏 高级一点的伴奏练习 正拍伴奏: 当要吹吸某一个音时,舌头先离开琴格,然后迅速盖上.
- SQL Server 提高执行效率的16种方法
1.尽量不要在where中包含子查询; 关于时间的查询,尽量不要写成:where to_char(dif_date,'yyyy-mm-dd')=to_char('2007-07-01′,'yyyy-m ...
- vue父组件调用子组件资源
通过上篇博文提到的方法我们可以触发子组件的某个事件来实现调用子组件的某些资源(例如数据和方法),但是更多的情况下我们会想不通过触发子组件的事件,而直接调用子组件的资源 这个时候我们就需要用到ref了, ...
- Linux文本处理工具——Sed
sed:数据流编辑器: awk:报告文本的生成器 sed 基本用法:(Stream EDitor) Stream 流 EDitor 编辑器 行编辑器 全屏编辑器:vi/vimsed:内存空间(模式空间 ...
- vue-cli构建项目使用 less
在vue-cli中构建的项目是可以使用less的,但是查看package.json可以发现,并没有less相关的插件,所以我们需要自行安装. 第一步:安装 npm install less less- ...
- js和jquery使按钮失效为不可用状态的方法
设置disabled属性为true即为不可用状态. html代码: <input type="button" value="提交" id="bt ...
- Markdown基础教程
标题 Markdown支持6种级别的标题,对应html标签 h1 ~ h6
- Linux内核中的printf实现【转】
转自:http://www.cnblogs.com/chenglei/archive/2009/08/06/1540702.html 从main.c中的printf开始读这个函数. 首先看printf ...