T5WA10分求调

长截图_20250209_193457

#include<bits/stdc++.h>
using namespace std;
int n,u,v,x[100001],y[100001],a,b,ans=0;
vector<int>g[100001];
bool vis[100001];
void dfs(bool f,int t){
  for(int i:g[t]){
    if(vis[i])continue;
    if(f)y[i]=y[t]+1;
    else x[i]=x[t]+1;
    vis[i]=1;
    dfs(f,i);
  }
}int main(){
  cin>>n>>u>>v;
  for(int i=1;i<n;i++){
    cin>>a>>b;
    g[a].push_back(b);
    g[b].push_back(a);
  }vis[u]=1;
  x[u]=y[v]=0;
  dfs(0,u);
  memset(vis,0,sizeof(vis));
  vis[u]=1;
  dfs(1,v);
  for(int i=1;i<=n;i++)if(y[i]<x[i])ans=max(ans,x[i]-1);
  cout<<ans;
  return 0;
}

疑似dfs出了问题

为啥你 dfs 起点步数不一样