请求加强数据!!!
查看原帖
请求加强数据!!!
838865
Ar20062016198229楼主2023/3/24 22:14

Dp方程错误90pts 代码:

#include<iostream>
using namespace std;
#define int long long
const long long MAXN=2000001;
int k,head[MAXN],cnt=1,n,dis[MAXN];
long long m[MAXN],siz[MAXN],maxn;

struct node{
	int to,nxt;
}e[MAXN*2];
void add(int x,int y){
	e[++cnt].to=y;
	e[cnt].nxt=head[x];
	head[x]=cnt;
}
void dfs(int now,int t){
	dis[t]=dis[now]+1;
	m[1]+=dis[t]-1;
	siz[t]=1;
	for(int i=head[t];i;i=e[i].nxt){
		int y=e[i].to;
		if(y!=now)
			dfs(t,y),siz[t]+=siz[y];
	}
}
void dfs1(int now,int pre){
	if(now!=1)
		m[now]=m[pre]+n-siz[now];
	if(m[now]>maxn)
		maxn=m[now],k=now;
	for(int i=head[now];i;i=e[i].nxt){
		int y=e[i].to;
		if(y!=pre)
			dfs1(y,now);
	}
}
signed main(){
	cin>>n;
	for(int i=1;i<n;i++){
		int x,y;
		cin>>x>>y;
		add(x,y);
		add(y,x);
	}
	dfs(0,1);
	dfs1(1,0);
	cout<<k;
}

2023/3/24 22:14
加载中...