0pts求条
查看原帖
0pts求条
678019
SZX__HAPPY楼主2024/10/5 10:47
#include<bits/stdc++.h>
using namespace std;
int n,x,y,id,ans,head[100005],d[100005],v[100005],nxt[100005],ver[100005],tot;
void add(int x,int y){
	ver[++tot]=y;
	nxt[tot]=head[x];
	head[x]=tot;
}
void dfs(int u,int dep){
	v[u]=1;
	for(int i=head[u];i;i=nxt[i]){
		int w=ver[i];
		if(v[w]) continue;
		dfs(w,dep+1);
		//ans=max(ans,d[u]+d[w]+1);
		d[w]=max(d[w],dep+1);
	}
}
int main(){
	cin>>n;
	for(int i=1;i<n;i++){
		scanf("%d%d",&x,&y);
		add(x,y);
		add(y,x);
	}
	dfs(1,0);
	for(int i=1;i<=n;i++){
		if(ans<d[i]){
			ans=d[i];
			id=i;
		}
	}
	memset(v,0,sizeof(v));
	dfs(id,0);
	for(int i=1;i<=n;i++){
		if(ans<d[i]){
			ans=d[i];
		}
	}
	cout<<ans;
	return 0;
}
2024/10/5 10:47
加载中...