地址:
点击打开链接
这个题目,emmm,以前没有接触过,最大完全子图(最大团),去网上看了一波,很简单。代码如下,
#include<iostream>
#include<cstdio>
using namespace std ;
#define MAX 55
int Set[MAX];//已经有了的存在这个里面
int Map[MAX][MAX];
int T;
int ans ;
//是不是与前面的所有点都联通
bool check(int end , int point){
for(int i = 0 ; i < end ; i ++)
{
if(!Map[Set[i]][point])
return false ;
}
return true ;
}
void dfs(int depth , int point ){
if(depth+(T-point+1)<=ans)
return ;
for(int i = point ; i < T ; i ++)
{
if(check(depth,i))
{
Set[depth] = i ;
dfs(depth+1,i+1);
}
}
if(depth>ans)
ans = depth ;
}
int main(){
int i,j;
while(~scanf("%d",&T)&&T)
{
for(i = 0 ; i <T ; i ++ )
{
for(j = 0 ; j < T ;j ++)
{
scanf("%d",&Map[i][j]);
}
}
ans = 0 ;
dfs(0,0);
printf("%d\n",ans);
}
}