标准的DFS,用map[][]来记录分数,用used[]来标志是否访问过。
/*HDOJ2614
作者:陈佳润
2013-04-12
*/
#include<iostream>
using namespace std;
int n;
int map[17][17];
bool used[17];
int result;
void DFS(int row,int score,int all){
int i;
result=all>result?all:result;
for(i=0;i<n;i++){
if(used[i]&&map[row][i]>=score&&i!=row)
{
used[i]=false;
DFS(i,map[row][i],all+1);
used[i]=true;
}
}
}
int main(){
int i,j;
//freopen("1.txt","r",stdin);
while(cin>>n){
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>map[i][j];
for(i=0;i<n;i++)
used[i]=true;
used[0]=false;
result=1;
DFS(0,0,1);
cout<<result<<endl;
}
return 0;
}