http://acm.hdu.edu.cn/showproblem.php?pid=2614
题目大意 题目就不粘了 就是一个简单的深搜 由于我深搜实在是不懂 就在写一个博客记录一下
#include<stdio.h> #include<string.h> #include<algorithm> #include<queue> using namespace std; #define N 20 int f[N][N]; int vis[N]; int n,Max; void dfs(int before,int k,int h) { for(int i=0; i<n; i++) { if(h>Max) Max=h; if(f[k][i]>=before&&vis[i]==0) { vis[i]=1; dfs(f[k][i],i,h+1); vis[i]=0; } } } int main() { while(scanf("%d",&n)!=EOF) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { scanf("%d",&f[i][j]); } } memset(vis,0,sizeof(vis)); Max=0; vis[0]=1; dfs(0,0,1); printf("%d ",Max); } return 0; }