0分!help me!
查看原帖
0分!help me!
776799
GODTREE楼主2023/2/14 14:02
#include <bits/stdc++.h>
using namespace std;
struct kkksc03
{
	int father;
	vector<int> sun;
	int val;
};
int main()
{
	int n;
	cin>>n;
	int a[n+1],ave=0;
	kkksc03 tree[n+1];
	for (int i=1;i<=n;i++)
	{
		cin>>a[i];
		ave+=a[i];
	}
	ave/=n;
	for (int i=1;i<=n;i++)
	{
		tree[i].val=a[i]-ave;
	}
	for (int i=1;i<n;i++)
	{
		int l,r;
		cin>>l>>r;
		if (r<l)swap(r,l);
		tree[l].sun.push_back(r);
		tree[r].father=l;
	}
	cout<<n-1<<endl;
	for (int i=n;i>1;i--)
	{
		if (tree[i].val>0)
		{
			int j=i;
			while (j!=1)
			{
				cout<<j<<" "<<tree[i].val<<" "<<tree[j].father;
				tree[j].val=0;
				j=tree[j].father;
			}
		}
	}
	for (int i=2;i<=n;i++)
	{
		int j=i;
		int sum=-tree[j].val;
		while (!tree[j].sun.empty())
		{
			for (int x=0;x<tree[j].sun.size();x++)
			{
				sum-=tree[j].sun[x];
			}
		}
		cout<<tree[j].father<<" "<<j<<" "<<sum<<endl;
	}
	return 0;
}  
2023/2/14 14:02
加载中...