WA求调,感觉快改得跟题解一模一样了
  • 板块UVA1205 Color a Tree
  • 楼主yuycESC
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/20 13:17
  • 上次更新2023/11/20 17:30:35
查看原帖
WA求调,感觉快改得跟题解一模一样了
239562
yuycESC楼主2023/11/20 13:17
#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
struct tree{
	int fa;
	int sum;
	double wei;
	int size;
//	vector<int> path;
	bool vis = false;
};
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n,r;
	while(cin>>n>>r){
		if(n == 0 && r == 0) return 0;
		tree a[N];
		int w[N];
		int ans = 0;
		for(int i=1;i<=n;i++){
			cin>>w[i];
			a[i].wei = w[i];
			a[i].sum = w[i];
			ans += w[i];
			a[i].size = 1;
		}
		for(int i=0;i<n - 1;i++){
			int u,v;
			cin>>u>>v;
			a[v].fa = u;
		}
		for(int k=0;k<n;k++){
			double maxwei = 0;
			int maxi = 0;
			for(int i=1;i<=n;i++){
				if(a[i].fa && !a[i].vis && a[i].wei > maxwei){
					maxwei = a[i].wei;
					maxi = i;
				}
			}
			a[maxi].vis = true;
			ans += a[maxi].sum * a[a[maxi].fa].size;
			for(int i=1;i<=n;i++){
				if(a[i].fa == maxi){
					a[i].fa = a[maxi].fa;
				}
			}
			
			a[a[maxi].fa].sum += a[maxi].sum; 
			a[a[maxi].fa].size += a[maxi].size;
			a[a[maxi].fa].wei = double(a[a[maxi].fa].sum * 1.0) / double(a[a[maxi].fa].size * 1.0);
		}
		cout<<ans<<'\n';
	}
	return 0;
}
2023/11/20 13:17
加载中...