博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 1492 Maximum Clique 搜索最大团
阅读量:5107 次
发布时间:2019-06-13

本文共 1115 字,大约阅读时间需要 3 分钟。

题意:给一个无向图 求最大团的大小。节点数小于50

数据有限,考虑记忆化搜索,方程很好给出。 

令 Si={vi,vi+1.....vn} mc[i]表示Si最大团的大小,倒着推算。

必有mc[i]=mc[i+1]或mc[i]=mc[i+1]+1 后一种情况 新的最大团必然包含vi 剪枝也是显然的。(1)current_size+remain_vertex<=ans

                                            (2)current_size+mc[i]<=ans

代码很简单

#include
#include
#include
#include
#include
#include
using namespace std;const int maxn=100;bool g[maxn][maxn],found;int ans,list[maxn][maxn],n,len[maxn],mc[maxn];void dfs(int size){ int i,j,k; if(len[size]==0) { if(size>ans) { ans=size; found=true; } return ; } for( k=0;k
0;--i) { found=false;len[1]=0; for(int j=i+1;j<=n;++j) if(g[i][j])list[1][len[1]++]=j; dfs(1); mc[i]=ans; }}int main(){ freopen("t.txt","r",stdin); while(scanf("%d",&n)) { if(!n)return 0; memset(g,0,sizeof(g)); memset(mc,0,sizeof(mc)); memset(list,0,sizeof(list)); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { int t;scanf("%d",&t); if(t==1)g[i][j]=1; } max_cluster(); printf("%d\n",ans); } return 0;}

  

转载于:https://www.cnblogs.com/heisenberg-/p/6476054.html

你可能感兴趣的文章
MyEclipse10安装SVN插件
查看>>
[转]: 视图和表的区别和联系
查看>>
Regular Experssion
查看>>
python中的字符编码
查看>>
图论例题1——NOIP2015信息传递
查看>>
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>
为什么int型最大的数是2147483647
查看>>
数据库连接的三层架构
查看>>
集合体系
查看>>
vi命令提示:Terminal too wide
查看>>
nyoj 5 Binary String Matching(string)
查看>>
引用 移植Linux到s3c2410上
查看>>
BizTalk 2010 单机安装
查看>>
人与人之间的差距是从大学开始的
查看>>
vue 开发过程中遇到的问题
查看>>
[Swift]LeetCode341. 压平嵌套链表迭代器 | Flatten Nested List Iterator
查看>>