Submission #415035

#TimeUsernameProblemLanguageResultExecution timeMemory
415035MeGustaElArroz23Shortcut (IOI16_shortcut)C++14
0 / 100
2065 ms332 KiB
#include "shortcut.h"
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<ll,ll> pii;
typedef vector<pii> vii;
typedef vector<vii> vvii;

const ll INF=100000000000000000;

void dfs(int n,vvii conex, int v, ll &mej){
    vector<bool> porvisitar(2*n,true);
    priority_queue<pii> cola;
    cola.push(pii{0,v});
    int recurs=0;
    while (cola.size()){
        if (recurs>3000) break;
        pii x=cola.top();
        cola.pop();
        if (porvisitar[x.second]){
            porvisitar[x.second]=false;
            mej=max(mej,-x.first);
            for (pii y:conex[x.second]){
                if (porvisitar[y.second]) cola.push(pii{x.first-y.first,y.second});
            }
        }
        recurs++;
    }
}

ll find_shortcut(int n, vi l, vi d, int c)
{
    vvii conexiones(2*n);
    for (int i=0;i<n-1;i++){
        conexiones[i].push_back(pii{l[i],i+1});
        conexiones[i+1].push_back(pii{l[i],i});
    }
    for (int i=0;i<n;i++){
        conexiones[i].push_back(pii{d[i],i+n});
        conexiones[n+i].push_back(pii{d[i],i});
    }
    ll mejor=INF;
    for (int i=0;i<n;i++){
        for (int j=i+1;j<n;j++){
            vvii conex=conexiones;
            conex[i].push_back(pii{c,j});
            conex[j].push_back(pii({c,i}));
            ll mej=0;
            for (int v=n;v<2*n;v++){
                dfs(n,conex,v,mej);
            }
            mejor=min(mejor,mej);
        }
    }
    return mejor;
}
#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...