Submission #834112

#TimeUsernameProblemLanguageResultExecution timeMemory
834112LiudasAesthetic (NOI20_aesthetic)C++17
13 / 100
2063 ms39316 KiB
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#define int long long
using namespace std;
signed main(){
    int N, M;
    cin >> N >> M;
    vector<vector<pair<int, int>>> tree(N);
    vector<int> vals(M);
    for(int i = 0; i < M; i ++){
        int a, b, c;
        cin >> a >> b >> c;
        a--;
        b--;
        tree[a].push_back({b,i});
        tree[b].push_back({a,i});
        vals[i] = c;
    }
    int an = 0;
    for(int i = 0; i < M-1; i ++){
        int tval = *max_element(vals.begin()+i+1, vals.end());
        vals[i] += tval;
        priority_queue<vector<int>> que;
        que.push({0,0});
        int ans = 0;
        vector<bool> vis(N);
        while(!que.empty()){
            int a = -que.top()[0], b = que.top()[1];
            que.pop();
            if(b == N-1){ans = a; break;}
            if(vis[b])continue;
            vis[b] = true;
            for(auto [l, r] : tree[b]){
                que.push({-a-vals[r], l});
            }
        }
        an = max(an, ans);
        vals[i] -= tval;
    }
    cout << an << 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...