#include <iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n, v; cin >> n;
for (int i = 1; i < n; ++i)
cin >> v >> v;
int m; cin >> m;
vector<vector<int>> s, e;
vector<int> dp(m), mx(m + 1), idx(m);
for (int i = 0; i < m; ++i) {
int x, y, z; cin >> x >> y >> z;
if (x > y) swap(x, y);
s.push_back({ x, y, z, i });
e.push_back({ y, x, z, i });
}
sort(s.begin(), s.end());
for (int i = m - 1; i >= 0; --i)
idx[s[i][3]] = i, dp[i] = s[i][2], mx[i] = max(mx[i + 1], s[i][2]);
sort(e.begin(), e.end());
int ans = 0;
for (int i = m - 1; i >= 0; --i) {
vector<int> x = { s[i][1] + 1, 0, 0, 0 };
auto it = lower_bound(s.begin(), s.end(), x);
mx[i] = max(mx[i], mx[i + 1]);
if (it == s.end()) continue;
int ix = idx[(*it)[3]];
dp[i] = s[i][2] + mx[ix];
mx[i] = max(dp[i], mx[i]);
ans = max(ans, dp[i]);
}
cout << ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |