题意:给你一个无向图,求他的最大团。
想法:很简单的模板题。
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n;
int map[55][55],cn,maxt,mark[500];
void dfs(int x)
{
if(x>n)
{
maxt=cn;
return;
}
bool flag=true;
for(int i=1;i<x;i++)
{
if(mark[i]&&!map[x][i])
{
flag=false;
break;
}
}
if(flag)
{
cn++;
mark[x]=true;
dfs(x+1);
cn--;
}
if(cn+n-x+1>maxt)
{
mark[x]=false;
dfs(x+1);
}
}
int main()
{
while(~scanf("%d",&n),n)
{
memset(map,0,sizeof(map));
memset(mark,0,sizeof(mark));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&map[i][j]);
}
}
cn=maxt=0;
dfs(1);
printf("%d\n",maxt);
}
return 0;
}