Submission #4036092


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define FOR(i, a, b) for(int i=(a);i<(b);i++)
#define REP(i, n) FOR(i, 0, n)
#define RFOR(i, a, b) for(int i=(a);i>=(b);i--)
#define RREP(i, n) RFOR(i, n, 0)
#define MFOR(i, m) for(auto i=(m).begin();i!=(m).end();i++)
#define ALL(a) (a).begin(), (a).end()
#define SZ(x) ((int)(x).size())

typedef long long int ll;
typedef pair<int, int> P;
typedef pair<ll, ll> Pll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;

const double eps = 1e-10;
const int MOD = 1000000007;
const int INF = 1000000000;
const ll LINF = 1 << 30;

template<typename T>
void printv(vector<T> const& s) {
  REP(i, SZ(s)) {
    cout << s[i] << " ";
  }
  cout << endl;
}

void update(const vector<vi> &chi, vi &v, int x) {
  REP(i, SZ(chi[x])) {
    if(v[chi[x][i]] == INT_MAX) v[chi[x][i]] = v[x];
    update(chi, v, chi[x][i]);
  }
}

void propagate(const vector<vi> &chi, vi &v, int x) {
  if(SZ(chi[x]) != 0) {
    int mi = INT_MAX;
    REP(i, SZ(chi[x])) {
      propagate(chi, v, chi[x][i]);
      mi = min(mi, v[chi[x][i]]);
    }
    v[x] = mi;
  }
}

int main () {
  cin.tie(0);
  cout << setprecision(10);

  int n, m; cin >> n >> m;
  vector<int> par(n);
  FOR(i, 1, n) cin >> par[i];
  vector<vi> chi(n);
  FOR(i, 1, n) {
    chi[par[i]].pb(i);
  }
  vi v(n, INT_MAX);
  v[0] = 0;
  REP(i, m) {
    int b, c; cin >> b >> c;
    v[b] = c;
  }

  update(chi, v, 0);
  
  propagate(chi, v, 0);
  v[0] = 0;
  
  
  ll cnt = 0;
  FOR(i, 1, n) {
    cnt += v[i] - v[par[i]];
  }
  cout << cnt << endl;
}

Submission Info

Submission Time
Task B - PackDrop
User kanra824
Language C++14 (GCC 5.4.1)
Score 300
Code Size 1743 Byte
Status AC
Exec Time 2 ms
Memory 384 KB

Judge Result

Set Name All
Score / Max Score 300 / 300
Status
AC × 27
Set Name Test Cases
All 00_sample_1, 00_sample_2, 00_sample_3, 10_random_00_n_5, 10_random_01_n_10, 10_random_02_n_2, 10_random_03_n_7, 10_random_04_n_6, 20_random_00_n_64, 20_random_01_n_95, 20_random_02_n_20, 20_random_03_n_33, 20_random_04_n_91, 30_random_00_n_793, 30_random_01_n_611, 30_random_02_n_852, 40_random_00_n_1000, 40_random_01_n_1000, 50_edge_one_00_n_11, 50_edge_one_01_n_101, 50_edge_one_02_n_999, 98_almost_straight_00_n_1000, 98_almost_straight_01_n_1000, 98_almost_straight_02_n_1000, 99_straight_00_n_10, 99_straight_01_n_100, 99_straight_02_n_1000
Case Name Status Exec Time Memory
00_sample_1 AC 1 ms 256 KB
00_sample_2 AC 1 ms 256 KB
00_sample_3 AC 1 ms 256 KB
10_random_00_n_5 AC 1 ms 256 KB
10_random_01_n_10 AC 1 ms 256 KB
10_random_02_n_2 AC 1 ms 256 KB
10_random_03_n_7 AC 1 ms 256 KB
10_random_04_n_6 AC 1 ms 256 KB
20_random_00_n_64 AC 1 ms 256 KB
20_random_01_n_95 AC 1 ms 256 KB
20_random_02_n_20 AC 1 ms 256 KB
20_random_03_n_33 AC 1 ms 256 KB
20_random_04_n_91 AC 1 ms 256 KB
30_random_00_n_793 AC 2 ms 256 KB
30_random_01_n_611 AC 2 ms 256 KB
30_random_02_n_852 AC 2 ms 256 KB
40_random_00_n_1000 AC 2 ms 256 KB
40_random_01_n_1000 AC 2 ms 256 KB
50_edge_one_00_n_11 AC 1 ms 256 KB
50_edge_one_01_n_101 AC 1 ms 256 KB
50_edge_one_02_n_999 AC 2 ms 384 KB
98_almost_straight_00_n_1000 AC 2 ms 384 KB
98_almost_straight_01_n_1000 AC 2 ms 384 KB
98_almost_straight_02_n_1000 AC 2 ms 384 KB
99_straight_00_n_10 AC 1 ms 256 KB
99_straight_01_n_100 AC 1 ms 256 KB
99_straight_02_n_1000 AC 2 ms 384 KB