← Home
#include<bits/stdc++.h>
using namespace std;
int n;
vector<int>g[500100],now;
void dfs(int x,int f,int d){
	bool nmd=0;
	for(int v:g[x]){
		if(v==f)continue;
		dfs(v,x,d+1),nmd=1;
	}
	if(!nmd)now.push_back(d);
}
int main(){
	scanf("%d",&n);
	for(int i=1,u,v;i<n;i++){
		scanf("%d%d",&u,&v);
		g[u].push_back(v),g[v].push_back(u);
	}
	int ans=0;
	for(int v:g[1]){
		now.clear();
		dfs(v,1,1);
		sort(now.begin(),now.end());
		int p=0;
		for(int i=0;i<now.size();i++)p=max(p+1,now[i]);
		ans=max(ans,p);
	}
	return printf("%d",ans),0;
}