#include <iostream>
using namespace std;
int deep,width,d;
int distance;
int n;
int x,y;
int tree[105][2];
int a,b;
int minW,maxW;
int sf=114514;
int fa1[100],fa2[100];
void diyigewenti(int p){
d++;
if (tree[p][0]==0){
if(d>deep) deep=d;
return;
}
int count=0;
while (tree[p][count]!=0){
diyigewenti(tree[p][count]);
count++;
d--;
}
return;
}
void diergewenti(int p,int f){
if (tree[p][0]==0){
return;
}
f--;
if (f<minW) minW=f;
diergewenti(tree[p][0],f);
f+=2;
if (f>maxW) maxW=f;
if (tree[p][1]!=0) diergewenti(tree[p][1],f);
return;
}
void threeone(int o){
deep++;
for (int i=1;i<n-1;i++){
if (i!=o && tree[i][0]==o){
fa1[i]=deep;
threeone(i);
return;
}
else if (i!=o && tree[i][1]==o){
fa1[i]=deep;
threeone(i);
return;
}
}
return;
}
void threetwo(int o){
deep++;
for (int i=1;i<n-1;i++){
if (i!=o && tree[i][0]==o){
fa2[i]=deep;
threetwo(i);
return;
}
else if (i!=o && tree[i][1]==o){
fa2[i]=deep;
threetwo(i);
return;
}
}
return;
}
int main(){
cin >> n;
for (int i=0;i<n-1;i++){
cin >> a;
for (int i=0;i<114514;i++){
if (tree[a][i]==0){
cin >> tree[a][i];
break;
}
}
}
cin >> x >> y;
diyigewenti(1);
cout << deep << '\n';
deep=0;
diergewenti(1,0);
cout << maxW-minW << '\n';
threeone(x);
deep=0;
threetwo(y);
for (int i=1;i<=100;i++){
if (fa1[i]!=0 && fa2[i]!=0){
if (fa1[i]*2+fa2[i]) sf=fa1[i]*2+fa2[i];
}
}
cout << sf << '\n';
return 0;
}
可以通过题目的测试用例,提交后却全都是WA,请问问题出在哪了?感谢!