医院设置
2025-02-03 14:40:49
发布于:上海
#include<bits/stdc++.h>
using namespace std;
vector<int> tr[110];
int a[110];
int sum[110];
int dp[110];
void dfs(int u,int fa){
sum[u] = a[u];
for(int son:tr[u]){
if(son==fa)continue;
dfs(son,u);
sum[u] += sum[son];
dp[u] += dp[son] + sum[son];
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
int x,y;
cin>>x>>y;
if(x!=0){
tr[i].push_back(x);
tr[x].push_back(i);
}
if(y!=0){
tr[i].push_back(y);
tr[y].push_back(i);
}
}
int mn = 1e9;
for(int i=1;i<=n;i++){
memset(sum,0,sizeof(sum));
memset(dp,0,sizeof(dp));
dfs(i,-1);
mn = min(mn,dp[i]);
}
cout<<mn;
return 0;
}
这里空空如也
有帮助,赞一个