0ptsRE求助
查看原帖
0ptsRE求助
1047537
wuzhuoran楼主2024/12/13 22:53
#include<bits/stdc++.h>
using namespace std;

int n,a[1000005],l[1000005],f[1000005],t;
vector<int> g[1000005]; 
int mi=INT_MAX,cnt;
int dfs(int x,int sum,int d){
	for(int i=0; i<g[x].size(); i++){
		if(f[g[x][i]]!=d){
			f[g[x][i]]=d;
			cnt+=a[g[x][i]]*sum;
			dfs(g[x][i],sum+1,d);
		}
	}
}

int main(){
	cin>>n;
	for(int i=1; i<=n; i++){
		cin>>a[i];
		int x,y;
		cin>>x>>y;
		if(x!=0){
    		g[i].push_back(x);
			g[x].push_back(i);
		} 
		if(y!=0){
			g[i].push_back(y);
			g[y].push_back(i);		
		}		
	}
	for(int i=1; i<=n; i++){
		cnt=0;
		f[i]=i;
		dfs(i,1,i);
		mi=min(mi,cnt);
	}
	cout<<mi;
	return 0;
	}

2024/12/13 22:53
加载中...