第一个点WA求助
查看原帖
第一个点WA求助
1404931
heyuhong楼主2025/8/3 19:10
#include<bits/stdc++.h>
using namespace std;

int n;
int u,v;
int x,y;
int sum[105];
int maxn=1;
struct node{
	int father;
	int left,right;
	int deep,vis;
}a[10005];

int lca(int s,int t){
	a[s].vis=1;
	while(a[s].father!=0){
		s=a[s].father;
		a[s].vis=1;
	}
	while(a[t].vis!=1){
		t=a[t].father;
	}
	return t;
}

int main(){
	scanf("%d",&n);
	a[1].deep=1;
	a[1].father=0;
	for(int i=1;i<n;i++){
		scanf("%d %d",&u,&v); 
		if(a[u].left==0){
			a[u].left=v;
		}else{
			a[u].right=v;
		}
		a[v].father=u;
		a[v].deep=a[u].deep+1;
		if(a[v].deep>maxn) maxn=a[v].deep;//最大深度 
	}
	scanf("%d %d",&x,&y);
	int num=0,num1=0;
	int f=lca(x,y);
	while(x!=f){
		x=a[x].father;
		num++;
	}
	while(y!=f){
		y=a[y].father;
		num1++;
	}
	num*=2;
	for(int i=1;i<=n;i++){
		sum[a[i].deep]++;
	}
	sort(sum+1,sum+1+100);
	printf("%d\n%d\n%d",maxn,sum[100],num+num1);
	return 0;
}
2025/8/3 19:10
加载中...