hdu 2614
天啊,漏了一个条件,搞了半天,默认从第0个problem 开始做起,唉,我枚举所有的问题了……………………
在DFS过程中,只要把最大深度记录下来即可,不需要其他
#include<iostream>
#include<string>
using namespace std;
int n,map[15][15],ans;
bool vis[15];
void dfs(int i,int j,int deep)
{
if(deep>ans)ans=deep;
for(int k=1;k<=n;k++)
{
if(vis[k]||k==j) continue;
if(map[i][j]<=map[j][k])
{
vis[k]=1;
dfs(j,k,deep+1);
vis[k]=0;
}
}
return ;
}
int main()
{
while(cin>>n)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>map[i][j];
memset(vis,0,sizeof(vis));
ans=0;
for(int j=2;j<=n;j++)
{
vis[j]=1;vis[1]=1;
dfs(1,j,2);
vis[j]=0;vis[1]=0;
}
cout<<ans<<endl;
}
return 0;
}

浙公网安备 33010602011771号