Submission #1165717

#TimeUsernameProblemLanguageResultExecution timeMemory
1165717tamyteCheap flights (LMIO18_pigus_skrydziai)C++20
100 / 100
1338 ms63196 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; map<pair<int, int>, ll> mp; vector<vector<pair<int, ll>>> mx; void check(int a, int b, ll w) { if (mx[a][0].second < w) { mx[a][1] = mx[a][0]; mx[a][0] = {b, w}; } else if (mx[a][1].second < w) { mx[a][1] = {b, w}; } } int main() { int n, m; cin >> n >> m; vector<ll> c(n); mx = vector<vector<pair<int, ll>>>(n, vector<pair<int, ll>>(2, {-1, -1})); for (int i = 0; i < m; ++i) { int a, b; ll w; cin >> a >> b >> w; --a; --b; c[a] += w; c[b] += w; mp[{a, b}] = mp[{b, a}] = w; check(a, b, w); check(b, a, w); } ll res = *max_element(begin(c), end(c)); for (int i = 0; i < n; ++i) { int p = mx[i][0].first; int q = mx[i][1].first; ll sum = 0; for (int j = 0; j < 2; ++j) { sum += mx[i][j].second; } if (mp.count({p, q})) { sum += mp[{p, q}]; res = max(res, sum); } } cout << res << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...