P3478求助!
  • 板块学术版
  • 楼主modelBobo
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/11/4 19:47
  • 上次更新2023/11/4 21:47:04
查看原帖
P3478求助!
1007881
modelBobo楼主2023/11/4 19:47

6、9、10RE

8WA

代码奉上


#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
struct edge {
	int to,nxt;
} e[maxn];
long long int n,cnt,id;
long long int head[maxn];
long long ans;
long long f[maxn],dep[maxn],size[maxn];
inline void add(int u,int v)
{
	e[++cnt].nxt=head[u];
	head[u]=cnt;
	e[cnt].to=v;
}
void dfs1(int x,int fa){
	size[x]=1;
	dep[x]=dep[fa]+1;
	for(int i=head[x]; i; i=e[i].nxt) {
		long long int y=e[i].to;
		if(y==fa) {
			continue;
		}
		dfs1(y,x);
		size[x]+=size[y];
	}
}
void dfs2(int x,int fa){
	for(int i=head[x]; i; i=e[i].nxt) {
		long int y=e[i].to;
		if(y==fa) {
			continue;
		}
		f[y]=f[x]+n-2*size[y];
		dfs2(y,x);
	}
}
int main(){
	scanf("%d",&n);
	for(int i=1; i<n; i++) {
		int u,v;
		scanf("%d%d",&u,&v);
		add(u,v),add(v,u);
	}
	dfs1(1,0);
	for(int i=1; i<=n; i++) {
		f[1]+=dep[i];
	}
	dfs2(1,0);
	for(int i=1; i<=n; i++) 
		if(ans<f[i]) {
			ans=f[i],id=i;
		}
	printf("%d",id);
	return 0;

}

2023/11/4 19:47
加载中...