在CSP的前一天求助QAQ
查看原帖
在CSP的前一天求助QAQ
177540
Mr_steamedbread楼主2020/11/6 16:35

样例都过不了QwQ 统计的时候因为没有向自己的父亲建边所以没有判断

#include <bits/stdc++.h>
using namespace std;
int m,n,q,co,wei;
const int maxn=1e6+5;
vector<pair<int,int> > g[maxn];
long long sum;
int son[maxn],len[maxn*2];
void dfs(int cur,int fa)
{
	son[fa]++;
	for(register int i=0;i<g[cur].size();i++)
	{
		int ver=g[cur][i].first;
		if(ver!=fa)
		{
			dfs(ver,cur);
			g[cur][i].second=abs(n-son[ver]-son[ver])*len[ver];
		}
	}
}
int main()
{
	scanf("%d",&m);
	for(register int i=1;i<m;i++)
	{
		son[i]=1;
		scanf("%d%d%d",&n,&q,&co);
		len[q]=co;
		g[n].push_back(make_pair(q,0));
//		g[q].push_back(make_pair(n,0));
	}
	dfs(1,0);
	for(register int i=1;i<m;i++)
	{
		for(register int j=0;j<g[i].size();j++)
		sum+=g[i][j].second;
	}
	printf("%lld",sum);
}

2020/11/6 16:35
加载中...