Submission #775739

# Submission time Handle Problem Language Result Execution time Memory
775739 2023-07-06T20:54:47 Z danikoynov Magic Tree (CEOI19_magictree) C++14
0 / 100
2000 ms 76176 KB
/**
 ____ ____ ____ ____ ____ ____
||l |||e |||i |||n |||a |||d ||
||__|||__|||__|||__|||__|||__||
|/__\|/__\|/__\|/__\|/__\|/__\|

**/

#include<bits/stdc++.h>
#define endl '\n'

using namespace std;
typedef long long ll;

void speed()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}

const int maxn = 1e5 + 10, maxk = 21;
int n, m, k, p[maxn], w[maxn], d[maxn];
ll dp[maxn][maxk], diff[maxn][maxk];
vector < int > adj[maxn];

void dfs(int v)
{
    for (int u : adj[v])
    {
        dfs(u);
        for (int j = 1; j <= k; j ++)
        {
            dp[v][j] += dp[u][j];
            diff[v][j - 1] += dp[u][j];
            diff[v][j] -= dp[u][j];
        //for (int j = 2; j <= k; j ++)
        //dp[v][j] = max(dp[v][j], dp[v][j - 1]);
            /**int pt = j;
            ll sum = diff[v][j];
            while(sum < 0)
            {

            }*/
        }
    }


    if (d[v] != 0)
    {
        dp[v][d[v]] += w[v];
        diff[v][d[v] - 1] += w[v];
        diff[v][d[v] - 1] -= w[v];
    }
    for (int j = 1; j < k; j ++)
    {
        if (diff[v][j] < 0)
        {
            diff[v][j + 1] += diff[v][j];
            diff[v][j] = 0;
        }
    }

    for (int j = 2; j <= k; j ++)
        dp[v][j] = max(dp[v][j], dp[v][j - 1]);
        /**cout << "----------" << endl;
        cout << v << endl;
        for (int j = 1; j < k; j ++)
            cout << diff[v][j] << " ";
        cout << endl;*/
}

void solve()
{
    cin >> n >> m >> k;
    for (int i = 2; i <= n; i ++)
    {
        cin >> p[i];
        adj[p[i]].push_back(i);
    }
    for (int i = 1; i <= m; i ++)
    {
        int v;
        cin >> v >> d[v] >> w[v];
    }

    dfs(1);
    ll ans = 0;
    for (int j = 1; j < k; j ++)
        ans = ans + diff[1][j];
    cout << ans << endl;
}

int main()
{
    solve();
    return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 121 ms 76176 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 3028 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 105 ms 37560 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2070 ms 10624 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -