1 solutions

  • 0
    @ 2026-3-9 16:19:41
    #include<bits/stdc++.h>
    using namespace std;
    const int N=110;
    vector<int> g[N];
    int w[N]; 
    int dfs(int u,int father,int d)
    {
    	int sum=d*w[u]; //当前点
    	for(auto j:g[u])
    	{
    		if(j==father) continue;
    		sum+=dfs(j,u,d+1); //累加子树
    	}
    	return sum;
    }
    int main()
    {
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		int l,r;
    		cin>>w[i]>>l>>r;
    		if(l) g[i].push_back(l),g[l].push_back(i);
    		if(r) g[i].push_back(r),g[r].push_back(i); 
    	}
    	int res=2e9;
    	for(int i=1;i<=n;i++)
    	{
    		//cout<<dfs(i,1,0); 
    		res=min(res,dfs(i,-1,0));
    	}
    	cout<<res;
    	return 0;
    }
    
    
    • 1

    Information

    ID
    1021
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    (None)
    # Submissions
    16
    Accepted
    7
    Uploaded By