40分!求助!!
查看原帖
40分!求助!!
519573
Daniel_yao楼主2022/8/4 19:51
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <climits>
#define ll long long 

using namespace std;

const int N = 105;

ll n, w[N], dis, ans, mini = INT_MAX;

vector <int> e[N];

void dfs(int x, int fa, int dis) {
  ans += dis * w[x];
  for (int i = 0; i < e[x].size(); i++){
    int y = e[x][i];
    if(y == fa) continue;
    dfs(y, x, dis + 1);
  }
}

int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int u, v; cin >> w[i] >> u >> v;
    if(u == 0 || v == 0) continue;
    e[i].push_back(u);
    e[i].push_back(v);
    e[u].push_back(i);
    e[v].push_back(i);
  }
  for (int i = 1; i <= n; i++) {
    ans = 0;
    dfs(i, 0, 0);
    mini = min(mini, ans);
  }
  cout << mini << '\n';
  return 0;
}

2022/8/4 19:51
加载中...