玄关
查看原帖
玄关
1004299
AlexSong楼主2024/7/14 12:11
#include<bits/stdc++.h>
#define maxn (1000000+5)
using namespace std;
long long n,ans,se[maxn];
bool fg[maxn];
struct e
{
	int t;
	long long ct;
};
vector<e> p[maxn];
void dfs(int s)
{
	se[s]=1;
	fg[s]=1;
	for(int i=0;i<p[s].size();i++)
	{
		if(!fg[p[s][i].t])
		{
			int y=p[s][i].t;
			dfs(y);
			se[s]+=se[y];
			ans+=p[s][i].ct*abs(se[y]-(n-se[y]));
		}
	}
}
int main()
{
	cin>>n;
	for(int i=2;i<=n;i++)
	{
		int x,y,z;
		cin>>x>>y>>z;
		p[x].push_pack((e)(y,z));
		p[y].push_back((e)(x,z));
	}
	dfs(1);
	cout<<ans<<endl;
	return 0;
}
2024/7/14 12:11
加载中...