求助
查看原帖
求助
672757
封禁用户楼主2024/8/29 12:39
#include<bits/stdc++.h>
using namespace std;
int n,dema=-1,mm[105],s,x,y,a,b;
struct dian
{
	int l,r,f;
}nn[105];
void dfs(int x,int t)
{
	mm[t]++;
	bool k=0;
	if(nn[x].l)
	{
		k=1;
		dfs(nn[x].l,t+1);
	}
	if(nn[x].r)
	{
		k=1;
		dfs(nn[x].r,t+1);
	}
	if(!k)
	{
		dema=max(dema,t);
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<n;i++)
	{
		cin>>a>>b;
		if(!nn[a].l)
		{
			nn[a].l=b;
		}
		else
		{
			nn[a].r=b;
		}
		nn[b].f=a;
	}
	a=b=0;
	dfs(1,1);
	cout<<dema<<"\n";
	for(int i=1;i<=dema;i++)
	{
		s=max(mm[i],s);
	}
	cout<<s<<endl;
	cin>>x>>y;
	memset(mm,0,sizeof(mm));
	mm[x]=1;
	for(int i=1;;i++)
	{
		if(x==1)
		{
			break;
		}
		a++;
		x=nn[x].f;
		mm[x]=1;
	}
	for(int i=1;;i++)
	{
		if(y==1||mm[y])
		{
			s=y;
			break;
		}
		b++;
		y=nn[y].f;
	}
	return 0;
}

这代码怎么求节点距离

2024/8/29 12:39
加载中...