Submission #1169437

#TimeUsernameProblemLanguageResultExecution timeMemory
1169437IgnutCheap flights (LMIO18_pigus_skrydziai)C++20
53 / 100
300 ms56960 KiB
/* Ignut
date: 18.03.2025
████████████████████████████████████████████████████████████████████
████████████████████████████████    ████████████████████████████████
██████████████████████████████        ██████████████████████████████
██████      ██████████████████        ██████████████████      ██████
██████          ██████████████        ██████████████          ██████
██████      ██    ████████████        ████████████    ██      ██████
██████      ████    ██████████        ██████████    ████      ██████
██████      ████      ██████████    ██████████      ████      ██████
██████      ████      ██████████    ██████████    ██████      ██████
██████      ██████    ██████████    ██████████    ██████      ██████
██████      ██████    ████████        ████████    ██████      ██████
██████      ██████      ██████        ██████      ██████      ██████
██████      ████        ████            ████        ████      ██████
██████            ██████████    ████    ██████████            ██████
██████      ██      ██████    ████████    ██████      ██      ██████
██████      ██████            ████████            ██████      ██████
██████                    ██            ██                    ██████
██████████████████████      ████    ████      ██████████████████████
████████████████████████      ██    ██      ████████████████████████
██████████████████████████                ██████████████████████████
██████████████████████████████        ██████████████████████████████
████████████████████████████████████████████████████████████████████
*/

#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const bool DEBUG = false;

const ll N = 2e6 + 123;

ll sun[2 * N];
map<pair<ll, ll>, ll> mpc; 

pair<ll, ll> b1[2 * N], b2[2 * N];

void Solve() {
    ll m, n; cin >> m >> n;
    ll a[n], b[n], c[n];
    for (ll i = 0; i <= m; i ++) sun[i] = 0;
    mpc.clear();
    for (ll i = 0; i < n; i ++) {
        cin >> a[i] >> b[i] >> c[i];
        sun[a[i]] += c[i], sun[b[i]] += c[i];
        mpc[{a[i], b[i]}] = c[i];
    }
    ll res = 0;
    for (ll i = 1; i <= m; i ++) res = max(res, sun[i]);
    for (ll i = 0; i <= m; i ++) b1[i] = b2[i] = {0, 0};
    for (ll i = 0; i < n; i ++) {
        pair<ll, ll> p = {c[i], b[i]};
        if (p > b1[a[i]]) b2[a[i]] = b1[a[i]], b1[a[i]] = p;
        else if (p > b2[a[i]]) b2[a[i]] = p;
        p = {c[i], a[i]};
        if (p > b1[b[i]]) b2[b[i]] = b1[b[i]], b1[b[i]] = p;
        else if (p > b2[b[i]]) b2[b[i]] = p;
    }
    for (ll i = 1; i <= m; i ++) {
        if (b2[i].second == 0) continue;
        res = max(res, b1[i].first + b2[i].first + mpc[{min(b1[i].second, b2[i].second), max(b1[i].second, b2[i].second)}]);
    }
    cout << res << '\n';
}

int main() {
    ios_base::sync_with_stdio(false), cin.tie(0);

    // ll t; cin >> t;
    // while (t --> 0) {
    Solve();
    // }
    return 0;
}

/*
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...