Submission #31627

#TimeUsernameProblemLanguageResultExecution timeMemory
31627aomeBeads and wires (APIO14_beads)C++14
28 / 100
1075 ms8704 KiB
/*input 5 1 2 10 1 3 40 1 4 15 1 5 20 10 4 10 2 1 2 21 1 3 13 6 7 1 7 9 5 2 4 3 2 5 8 1 6 55 6 8 34 */ #include <algorithm> #include <bitset> #include <cassert> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <fstream> #include <functional> #include <iomanip> #include <iostream> #include <list> #include <map> #include <numeric> #include <queue> #include <set> #include <sstream> #include <stack> #include <utility> #include <vector> using namespace std; #define sp ' ' #define endl '\n' #define fi first #define se second #define mp make_pair #define int long long #define N 200005 int n; vector<vector<pair<int, int> > > a(N); int dp[N][2]; int cal(int u, int p, bool up, int price) { int &ret = dp[u][up]; if (ret != -1) return ret; ret = 0; int sum = 0; for (int i = 0; i < a[u].size(); i++) { int v = a[u][i].fi; if (v == p) continue; sum += cal(v, u, 0, a[u][i].se); } ret = max(ret, sum); if (!up) { for (int i = 0; i < a[u].size(); i++) { int v = a[u][i].fi; if (v == p) continue; ret = max(ret, sum - cal(v, u, 0, a[u][i].se) + cal(v, u, 1, a[u][i].se) + a[u][i].se + price); } } return ret; } int ans = 0; void modify(int u, int p, int price) { if (u != 1) { dp[p][0] = dp[p][1] = -1; dp[u][0] = dp[u][1] = -1; ans = max(ans, cal(u, u, 1, 0)); } else { ans = max(ans, cal(u, u, 1, 0)); } for (int i = 0; i < a[u].size(); i++) { int v = a[u][i].fi; if (v == p) continue; int x0 = dp[v][0], x1 = dp[v][1], y0 = dp[u][0], y1 = dp[u][1]; modify(v, u, a[u][i].se); dp[v][0] = x0; dp[v][1] = x1; dp[u][0] = y0; dp[u][1] = y1; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); #ifdef UncleGrandpa freopen("1test.inp", "r", stdin); #endif cin >> n; for (int i = 1; i <= n - 1; i++) { int u, v, c; cin >> u >> v >> c; a[u].push_back(mp(v, c)); a[v].push_back(mp(u, c)); } memset(dp, -1, sizeof(dp)); modify(1, 1, 0); cout << ans << endl; }

Compilation message (stderr)

beads.cpp: In function 'long long int cal(long long int, long long int, bool, long long int)':
beads.cpp:57:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < a[u].size(); i++) {
                  ~~^~~~~~~~~~~~~
beads.cpp:63:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < a[u].size(); i++) {
                   ~~^~~~~~~~~~~~~
beads.cpp: In function 'void modify(long long int, long long int, long long int)':
beads.cpp:81:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < a[u].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...