0分求调
查看原帖
0分求调
1324637
linshuge楼主2025/2/6 17:07
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+50;
ll n,dp[N][1];
vector<ll> g[N];
ll dfs(ll node,ll fa,ll s){
	bool f=0;
	ll an=-1;
	for(auto k : g[node]){
		if(k!=fa){
			f=1;
			an=max(dfs(k,node,s+1),an);
		}
	}
	if(f==0){
		dp[node][0]=s+1;
		return 0;
	}else{
		return an+1;
	}
}
int main(){
	cin>>n;
	for(int i=0,u,v;i<n-1;i++){
		cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	if(n==2){
		cout<<"1";
		return 0;
	}if(n==3){
		cout<<"2";
		return 0;
	}
	ll p=dfs(1,0,0)+1;
	//cout<<endl<<p<<endl<<endl;
	for(int i=1;i<=n;i++){
		//cout<<dp[i][0]<<endl;
		if(dp[i][0]==p){
			cout<<dfs(i,0,0)+1;
			return 0;
		} 
	}
}
/*
5
1 2
2 3
2 4
3 5

*/
2025/2/6 17:07
加载中...