#include <stdio.h>
#define N 50
int m,n;
int mat[N][N],vis[N];
int cnt,bestc;
void dfs(int t)
{
if(t == n)
{
if(cnt > bestc)
bestc = cnt;
return ;
}
int i,ok = 1;
for(i = 0; i < t; ++i)
if(vis[i] && mat[i][t] == 0)
{
ok = 0;
break;
}
if(ok)
{
vis[t] = 1;
++cnt;
dfs(t + 1);
--cnt;
vis[t] = 0;
}
if(cnt + n - t - 1 > bestc)
dfs(t + 1);
}
int main()
{
while(scanf("%d",&n) == 1 && n)
{
int i,j;
for(i = 0; i < n; ++i)
for(j = 0; j < n; ++j)
scanf("%d",&mat[i][j]);
bestc = cnt = 0;
dfs(0);
printf("%d\n",bestc);
}
return 0;
}
hdu 1530#裸的最大团
最新推荐文章于 2018-11-12 19:31:58 发布
这是一个C语言实现的求解最大团问题的程序。通过深度优先搜索(DFS)遍历矩阵,寻找无边相连的节点数量,更新最大团的大小。程序读取矩阵输入,输出最大团的数量。
摘要由CSDN通过智能技术生成