蒟蒻求助,为什么RE
  • 板块P1395 会议
  • 楼主ZeroF
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/7/14 10:50
  • 上次更新2023/10/27 20:26:59
查看原帖
蒟蒻求助,为什么RE
385165
ZeroF楼主2022/7/14 10:50

rt

#include<bits/stdc++.h>
using namespace std;
vector<int>edge[50010];
int dep[50010],size[50010],father[50010],res,index,n,tot;
void pre(int u,int fa){
	size[u]=1;
	father[u]=fa;
	for(int i=0;i<edge[u].size();i++){
		int v=edge[u][i];
		if(v==fa)continue;
		pre(v,u);
		size[u]+=size[v];
	}
}
bool iscore(int u){
	if(n-size[u]>n/2){
		return false;
	}
	for(int i=0;i<edge[u].size();i++){
		int v=edge[u][i];
		if(v==father[u])continue;
		if(size[v]>n/2){
			return false;
		}
	}
	return true;
}
void dfs(int u,int fa){
	dep[u]=dep[fa]+1;
	for(int i=0;i<edge[u][i];i++){
		int v=edge[u][i];
		if(v==fa)continue;
		dfs(v,u);
	}
	res+=dep[u]-1;
}
int main(){
	cin>>n;
	for(int i=1;i<n;i++){
		int u,v;
		cin>>u>>v;
		edge[u].push_back(v);
		edge[v].push_back(u);
	}
	pre(1,0);
	for(int i=1;i<=n;i++){
		if(iscore(i)){
			dfs(i,0);
			cout<<i<<" "<<res<<endl;
			return 0;
		}
	}
	return 0;
}
2022/7/14 10:50
加载中...