社区讨论

求助部分分链的情况

P5666[CSP-S 2019] 树的重心参与者 3已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@lodedfl0
此快照首次捕获于
2023/10/31 05:13
2 年前
此快照最后确认于
2023/11/06 20:34
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,ans,flag[100010],ku,kv,kw,t;
int js(int n)
{
	return ((n+1)*n)/2;
}
signed main()
{
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(int i=1;i<n;i++)
		scanf("%d%d",&ku,&kv);
		if(n%2==1)
		ans=3*js(n)-(n+1)/2-n-1;;
		if(n%2==0)
		ans=3*js(n)-n/2-n/2-1-n-1;
		printf("%lld\n",ans);
	}
	return 0;
}
CPP
如果是链的情况,我推出来当n%2==11结点和n结点以及最中间结点就是(n+1)/2结点只被算了两次,其余结点算了三次。  
 
当n%2==0时1结点和n结点以及中间两个结点就是n/2结点和n/2+1号结点只被算了两次,其余结点算了三次。

回复

7 条回复,欢迎继续交流。

正在加载回复...