Submission #1174384

#TimeUsernameProblemLanguageResultExecution timeMemory
1174384HappyCapybaraShortcut (IOI16_shortcut)C++17
0 / 100
1 ms328 KiB
#include "shortcut.h"
#include<bits/stdc++.h>
using namespace std;

#define ll long long

int n;

vector<vector<pair<int,ll>>> g;

pair<int,ll> djk(int s){
    //cout << s << endl;
    priority_queue<pair<int,ll>> pq;
    vector<ll> d(2*n, -1);
    pq.push({0, s});
    while (!pq.empty()){
        int cur = pq.top().second;
        ll dist = -pq.top().first;
        pq.pop();
        if (d[cur] != -1) continue;
        d[cur] = dist;
        for (auto [next, d2] : g[cur]) pq.push({-(dist+d2), next});
    }
    pair<int,ll> res = {s, 0};
    for (int i=0; i<2*n; i++){
        if (d[i] > res.second) res = {i, d[i]};
    }
    return res;
}

ll calc(){
    ll res = 0;
    for (int i=0; i<2*n; i++) res = max(res, djk(i).second);
    return res;
    //return djk(djk(djk(djk(0).first).first).first).second;
}

ll find_shortcut(int n, vector<int> l, vector<int> d, int c){
    ::n = n;
    g.resize(2*n);
    for (int i=0; i<n; i++){
        g[i].push_back({i+n, d[i]});
        g[i+n].push_back({i, d[i]});
        if (i == n-1) continue;
        g[i].push_back({i+1, l[i]});
        g[i+1].push_back({i, l[i]});
    }
    ll bsf = (1ll<<50);
    for (int i=0; i<n; i++){
        for (int j=i+1; j<n; j++){
            g[i].push_back({j, c});
            g[j].push_back({i, c});
            bsf = min(bsf, calc());
            g[i].pop_back();
            g[j].pop_back();
            //cout << i << " " << j << " " << bsf << endl;
        }
    }
    return bsf;
}

Compilation message (stderr)

shortcut.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
shortcut_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...