求助 简单的树上问题
  • 板块学术版
  • 楼主__Cby___
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/10/3 13:03
  • 上次更新2023/11/2 16:20:21
查看原帖
求助 简单的树上问题
734049
__Cby___楼主2023/10/3 13:03

P1395

#include <iostream>
#include <vector>
using namespace std;
vector<int> a[50025];
bool v[50025];
int ans=1e9,ans_i=0; 
int d=0;
int dfs(int n){
	v[n]=1;
	int m=0,sum=0;
	for(auto i:a[n]){
		if(!v[i]){
			int t=dfs(i);
			m=max(t,m);
			sum+=t;
		}
	}
	sum++;
	m=max(m,d-m);
	if(m<ans){
		ans_i=n;
		ans=m;
	}
	return sum; 
}
int main(){
	int n;
	cin>>n;
	d=n;
	for(int i=0;i<n-1;i++){
		int x,y;
		cin>>x>>y;
		a[x].push_back(y);
		a[y].push_back(x);
	}
	dfs(1);
	cout<<ans_i<<" "<<ans<<endl; 
	return 0;
}

第二个输出肯定错了
但第一个输出怎么调啊
能不能帮我改下

2023/10/3 13:03
加载中...