求助
查看原帖
求助
995945
watermouthhang楼主2023/7/29 19:30

3-20WA 求助 代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <iomanip>
#include <cstring>
#include <string>
#include <cmath>
#include <map>
#include <cstdint>

using namespace std;
struct node
{
	int w;
	int to;
	node(int to_,int w_)
	{
		w=w_;
		to=to_;
	}
};
vector<node> tree[1000010];
int n;
int cd[1000010];
int ans=0;

void add(int x,int y,int w)
{
	tree[x].push_back({y,w});
	tree[y].push_back({x,w});
}

void dfs(const int& np,const int& fp)
{
	++cd[np];
	for(int i=0;i<tree[np].size();++i)
	{
		if(tree[np][i].to!=fp)
		{
			dfs(tree[np][i].to,np);
			cd[np]+=cd[tree[np][i].to];
			ans+=tree[np][i].w*abs(2*cd[tree[np][i].to]-n);
		}
	}
	
}





int main()
{
	scanf("%d",&n);
	int x,y,z;
	for(int i=1;i<n;++i)
	{
		
		scanf("%d%d%d",&x,&y,&z);
		add(x,y,z);
	}
	/*
	for(int i=1;i<=n;++i)
	{
		cout<<i<<":";
		for(int j=0;j<tree[i].size();++j)
		{
			cout<<tree[i][j].to<<",";
		}
		cout<<endl;
	}
	cout<<endl;*/
	dfs(1,-1);
	/*
	for(int i=1;i<=n;++i)
	{
		cout<<cd[i]<<' ';
	}
	cout<<endl;*/
	cout<<ans<<endl;
	return 0;
}

感谢!

2023/7/29 19:30
加载中...