Codeforces - Ants in Leaves

题目链接:Codeforces - Ants in Leaves


因为根节点无限制,所以我们不看根节点。

然后其他点肯定是优先深度小的叶子到达,相等的就相当于某个深度增大,所以sort一遍即可,处理一下相同的深度。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include
//#define int long long
using namespace std;
const int N=5e5+10;
int n,res;
vector<int> g[N],v;
void dfs(int x,int fa,int dep){
	if(g[x].size()==1)	v.push_back(dep);
	for(int to:g[x]) if(to!=fa) dfs(to,x,dep+1);
}
signed main(){
	cin>>n;
	for(int i=1,a,b;i<n;i++)	scanf("%d %d",&a,&b),g[a].push_back(b),g[b].push_back(a);
	for(int to:g[1]){
		v.clear();	dfs(to,1,1); sort(v.begin(),v.end());
		for(int i=1;i<v.size();i++) if(v[i]<=v[i-1]) v[i]=v[i-1]+1;
		res=max(res,v.back());
	}
	cout<<res;
	return 0;
}

你可能感兴趣的:(思维题,Codeforces,贪心)