#include<stdio.h>
#define N 60
int map[N][N] ,n;
int now[N] ,Ans;
bool ok(int sum ,int to)
{
for(int i = 1 ;i <= sum ;i ++)
if(!map[now[i]][to]) return 0;
return 1;
}
void DFS(int to ,int sum ,int node)
{
if(Ans < sum) Ans = sum;
if(sum + n - node < Ans) return;
for(int i = to + 1 ;i <= n ;i ++)
if(ok(sum ,i))
{
now[sum + 1] = i;
DFS(i ,sum + 1 ,node + 1);
}
}
int main ()
{
int i ,j;
while(~scanf("%d" ,&n) && n)
{
for(i = 1 ;i <= n ;i ++)
for(j = 1 ;j <= n ;j ++)
scanf("%d" ,&map[i][j]);
Ans = 0;
for(i = 1 ;i <= n ;i ++)
{
now[1] = i;
DFS(i ,1 ,1);
}
printf("%d\n" ,Ans);
}
return 0;
}
tjut 1530
最新推荐文章于 2018-08-25 21:09:05 发布