求助部分分链的情况
查看原帖
求助部分分链的情况
281360
LSG_waterf楼主2020/8/12 10:36
#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;
}
如果是链的情况,我推出来当n%2==1时1结点和n结点以及最中间结点就是(n+1)/2结点只被算了两次,其余结点算了三次。  
 

当n%2==0时1结点和n结点以及中间两个结点就是n/2结点和n/2+1号结点只被算了两次,其余结点算了三次。

2020/8/12 10:36
加载中...