佬们,不是树形dp的dfs能过吗,我dfs狠狠的T了
#include<bits/stdc++.h>
using namespace std;
int h[100005],cnt,max1=0;
struct node{
int v,next;
}e[100005];
int d[100005];
int vis[100005];
int far=0;
void add(int x,int y){
e[++cnt]={y,h[x]};
h[x]=cnt;
}
void dfs(int x,int dep){
vis[x]=1;
for(int i=h[x];i;i=e[i].next){
int v=e[i].v;
if(vis[v])continue;
dfs(v,dep+1);
d[x]=max(d[x],dep+1);
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<n;i++){
int a,b;
cin>>a>>b;
add(a,b);
add(b,a);
}
dfs(1,0);
int ans=0;
int id=0;
for(int i=1;i<=n;i++){
if(ans<d[i]){
ans=d[i];
id=i;
}
}
memset(vis,0,sizeof(vis));
dfs(id,0);
for(int i=1;i<=n;i++)ans=max(ans,d[i]);
cout<<ans<<endl;
return 0;
}