全部MLE 求调
查看原帖
全部MLE 求调
1023710
HHJ__1145145楼主2024/5/19 10:12
#include<algorithm>
#include<iostream> 
using namespace std;

int n,to[105],cnt,nxt[105],h[105],dep[105],size[105],x,y,ans1,ans2,fa[105];

void add(int a,int b)
{
    to[++cnt]=b;
    nxt[cnt]=h[a];
    h[a]=cnt; 
}

int dfs(int u)
{
	dep[u]=dep[fa[u]]+1;
	ans1=max(ans1,dep[u]);
	size[dep[u]]++;
	ans2=max(ans2,size[dep[u]]);
	for(int i=h[u];i;i=nxt[i])
	{
		dfs(to[i]);
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<n;i++)
	{
		int u,v;
		cin>>u>>v;
		fa[v]=u;
		add(u,v);
		//add(v,u,1);
	}
	cin>>x>>y;
	int xx=x,yy=y;
	///dep[1]=1;
///	size[1]=1;
	dfs(1);
	cout<<ans1<<endl<<ans2<<endl;
	int xy=abs(dep[x]-dep[y]);
	for(int i=1;i<=xy;i++)
	{
		if(dep[x]>dep[y])	x=fa[x];
		else if(dep[x]<dep[y])	y=fa[y];
	}
	while(x!=y)
	{
		x=fa[x],y=fa[y];
	}
	int ans3=(dep[xx]-dep[x])*2+dep[yy]-dep[x];
	cout<<ans3;
	return 0;
}
2024/5/19 10:12
加载中...