悠闲的漫步
题目给出一棵树求树的最大深度
思路
水题
可以考虑从底向上统计 到祖先为止的长度 取MAX
代码#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
const int Maxn=1001;
int tot,n,sum=1,th;
int ans,a[Maxn],son[3][Maxn],c[Maxn],d[Maxn],end[Maxn],fa[Maxn],b[Maxn];
int main()
{
cin>>n;
for(int i=1;i<=n-1;i++)
{
cin>>a[i];
cin>>b[i]>>c[i];
fa[b[i]]=a[i];
fa[c[i]]=a[i];
son[1][a[i]]=b[i];
son[2][a[i]]=c[i];
}
for(int i=1;i<=n-1;i++)
if(son[1][a[i]]==0&&son[2][a[i]]==0)
end[++tot]=a[i];
for(int i=1;i<=tot;i++)
{
th=end[i];
while(th!=1)
{
d[i]++;
th=fa[th];
}
}
sort(d+1,d+tot+1);
cout<<d[tot]+1;
}
欢迎指出Bug
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
const int Maxn=1001;
int tot,n,sum=1,th;
int ans,a[Maxn],son[3][Maxn],c[Maxn],d[Maxn],end[Maxn],fa[Maxn],b[Maxn];
int main()
{
cin>>n;
for(int i=1;i<=n-1;i++)
{
cin>>a[i];
cin>>b[i]>>c[i];
fa[b[i]]=a[i];
fa[c[i]]=a[i];
son[1][a[i]]=b[i];
son[2][a[i]]=c[i];
}
for(int i=1;i<=n-1;i++)
if(son[1][a[i]]==0&&son[2][a[i]]==0)
end[++tot]=a[i];
for(int i=1;i<=tot;i++)
{
th=end[i];
while(th!=1)
{
d[i]++;
th=fa[th];
}
}
sort(d+1,d+tot+1);
cout<<d[tot]+1;
}
End。