哪位大佬看看,90分,急!
  • 板块学术版
  • 楼主Jasonshan10
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/2/4 21:21
  • 上次更新2023/10/24 01:41:22
查看原帖
哪位大佬看看,90分,急!
782125
Jasonshan10楼主2023/2/4 21:21

给你一棵无根树,求树上两个点之间的距离。

第一行输入一个整数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;
}
2023/2/4 21:21
加载中...