Submission #242259

#TimeUsernameProblemLanguageResultExecution timeMemory
242259shenxyMagic Tree (CEOI19_magictree)C++11
37 / 100
118 ms32376 KiB
#include <cstdio> #include <algorithm> #include <vector> #include <cstring> using namespace std; int n, m, k, d[100000]; long long dpt1[100000][22], w[100000]; vector<int> adjlist[100000]; long long dp1(int v, int x) { if (dpt1[v][x] != -1) return dpt1[v][x]; if (x == 0) return dpt1[v][x] = 0; dpt1[v][x] = (d[v] == x ? w[v] : 0); for (int i: adjlist[v]) dpt1[v][x] += dp1(i, x); return dpt1[v][x] = max(dpt1[v][x], dp1(v, x - 1)); } int main() { scanf("%d %d %d", &n, &m, &k); if (k <= 20) { int p, v, D, W; for (int i = 1; i < n; ++i) { scanf("%d", &p); adjlist[p - 1].push_back(i); } fill_n(d, 100000, 0); fill_n(w, 100000, 0); for (int i = 0; i < m; ++i) { scanf("%d %d %d", &v, &D, &W); d[v - 1] = D; w[v - 1] = W; } memset(dpt1, -1, sizeof dpt1); printf("%lld", dp1(0, k + 1)); } else { for (int i = 1; i < n; ++i) scanf("%d", &k); int v, d, w; long long ans = 0; for (int i = 0; i < m; ++i) { scanf("%d %d %d", &v, &d, &w); ans += w; } printf("%lld", ans); } return 0; }

Compilation message (stderr)

magictree.cpp: In function 'int main()':
magictree.cpp:17:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d %d", &n, &m, &k);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
magictree.cpp:21:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d", &p);
    ~~~~~^~~~~~~~~~
magictree.cpp:27:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d %d %d", &v, &D, &W);
    ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
magictree.cpp:34:36: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   for (int i = 1; i < n; ++i) scanf("%d", &k);
                               ~~~~~^~~~~~~~~~
magictree.cpp:38:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d %d %d", &v, &d, &w);
    ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...