给你一棵无根树,求树上两个点之间的距离。
第一行输入一个整数n,表示树的总点数
接下来n−1行每行输入两个整数表示一条树边
最后一行输入两个点a,b
输出一个整数表示a,b之间的距离
4
1 2
2 3
3 4
1 4
#### 输出3
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> v[100001];
bool vis[100001];
ll a,b;
void dfs(ll root,ll dep){
if (root==b){
cout<<dep;
return;
}
for(int i=0;i<v[root].size();++i){
if (vis[v[root][i]]==0){
vis[v[root][i]]=1;
dfs(v[root][i],dep+1);
}
}
}
int main(){
ll n,x,y;
scanf("%lld",&n);
for(int i=1;i<n;++i){
scanf("%lld %lld",&x,&y);
if (x!=y&&find(v[x].begin(),v[x].end(),y)==v[x].end()){
v[x].push_back(y);
v[y].push_back(x);
}
}
scanf("%lld %lld",&a,&b);
dfs(a,0);
return 0;
}