求调
  • 板块P1395 会议
  • 楼主AC_notonlyAC
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/4/9 12:12
  • 上次更新2023/10/23 18:57:18
查看原帖
求调
528802
AC_notonlyAC楼主2023/4/9 12:12

WAWA

#include<bits/stdc++.h>
const int N=200005;
int n,tot,head[N],tail[N],nxt[N],d[N],sum[N],size[N];
void add_edge(int u,int v)
{
	tail[++tot]=v;
	nxt[tot]=head[u];
	head[u]=tot;
}
bool vis[N];
void dfs(int x)
{
	vis[x]=1;
	for(int i=head[x];i;i=nxt[i])
	{
		int ed=tail[i];
		if(!vis[ed])
		{
			d[ed]=d[x]+1;
			dfs(ed);
			size[x]+=size[ed];
		}
	}
}
void dfs2(int x)
{
	for(int i=head[x];i;i=nxt[i])
	{
		int ed=tail[i];
		if(sum[ed]==0)
		{
			sum[ed]=sum[x]-size[ed]+(n-size[ed]);
			dfs2(ed);
		}
	}
}
int main()
{
	std::cin>>n;
	for(int i=1;i<n;i++)
	{
		int u,v;
		std::cin>>u>>v;
		add_edge(u,v);
		add_edge(v,u);
	}
	dfs(1);
	for(int i=2;i<=n;i++) sum[1]+=d[i];
	dfs2(1);
	int minn=1e9,id;
	for(int i=2;i<=n;i++)
	{
		std::cout<<sum[i]<<" ";
		if(sum[i]<minn)
		{
			minn=sum[i];
			id=i;
		}
	}
	std::cout<<id<<" "<<minn;
}
2023/4/9 12:12
加载中...