Submission #386255

#TimeUsernameProblemLanguageResultExecution timeMemory
386255Drew_구슬과 끈 (APIO14_beads)C++14
0 / 100
5 ms4972 KiB
#include <iostream> #include <vector> #include <algorithm> #include <assert.h> using namespace std; #define int long long #define pb push_back #define ii pair<int, int> #define f1 first #define s2 second const int MAX = 2e5 + 7; //dp[x][0]: do not use the edge to the parent of node x //dp[x][1]: used the edge to the parent of node x int dp[MAX][2]; vector<ii> adj[MAX]; void dfs(int node, int par, int par_val) { vector<int> v0; vector<int> v1; vector<int> edge; for (ii to : adj[node]) { if (to.f1 != par) { dfs(to.f1, node, to.s2); v0.pb(dp[to.f1][0]); v1.pb(dp[to.f1][1]); edge.pb(to.s2); } } //not using node as center int non_center = 0; for (int i = 0; i < v0.size(); ++i) non_center += max(0LL, max(v0[i], v1[i])); //using two edges vector<int> val; for (int i = 0; i < v0.size(); ++i) { if (v0[i] >= v1[i]) val.pb(edge[i]); else val.pb(edge[i] + v0[i] - v1[i]); } sort(val.begin(), val.end(), greater<int>()); dp[node][0] = non_center; if (val.size() >= 2) dp[node][0] = max(dp[node][0], non_center + val[0] + val[1]); if (val.size() >= 1) dp[node][1] = non_center + val[0] + par_val; } int32_t main() { ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; for (int i = 0; i < n-1; ++i) { int u, v, w; cin >> u >> v >> w; adj[u].pb({v, w}); adj[v].pb({u, w}); } dfs(1, -1, -1); cout << dp[1][0] << '\n'; return 0; }

Compilation message (stderr)

beads.cpp: In function 'void dfs(long long int, long long int, long long int)':
beads.cpp:40:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |  for (int i = 0; i < v0.size(); ++i)
      |                  ~~^~~~~~~~~~~
beads.cpp:45:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |  for (int i = 0; i < v0.size(); ++i)
      |                  ~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...