Submission #1302823

#TimeUsernameProblemLanguageResultExecution timeMemory
13028231otaAesthetic (NOI20_aesthetic)C++20
0 / 100
2095 ms1114112 KiB
#include <bits/stdc++.h>
using namespace std;

#define endl "\n"
#define int long long
#define pii pair<int, int>
#define ff first
#define ss second
#define entire(x) (x).begin(), (x).end()

using Edge = array<int, 3>;

int32_t main(){
    ios::sync_with_stdio(false); cin.tie(nullptr);

    int n, m; cin >> n >> m;
    vector<vector<Edge>> adj(n);
    vector<Edge> edge(m);


    for (int i = 0; i < m; i++){
        int u, v, w; cin >> u >> v >> w; u--, v--;
        if (u == v) continue;
        adj[u].push_back({v, w, i}); adj[v].push_back({u, w, i});
        edge[i] = Edge{u, v, w};
    }

    vector<int> suff(m+1, 0);
    for (int i = m-1; i > -1; i--) suff[i] = max(suff[i], edge[i][2]);


    pii ans;
    auto dfs = [&](auto&& self, int s, int pi, int W, int idx) -> void{
        if (s == n-1) ans = {W, idx};
        for (auto [u, w, i] : adj[s]) if (u != pi) self(self, u, s, W + w, min(idx, i));
    }; dfs(dfs, 0, 0, 0, 0);

    cout << ans.ff + suff[ans.ss + 1] << endl;
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...