Submission #1337295

#TimeUsernameProblemLanguageResultExecution timeMemory
1337295kitijakFactories (JOI14_factories)C++20
15 / 100
8089 ms56504 KiB
#include "factories.h"
#include <vector>
#include <algorithm>
#include <queue>
#include <climits>
#define ll long long
#define pii pair<long long, long long>
#define pb push_back
#define fi first
#define se second
using namespace std;
vector<pii>graph[500005];
ll n, att[500005];
void Init(int N, int A[], int B[], int D[]){
    n=N;
    for(int i=0; i<n; i++){
        graph[A[i]].pb({D[i], B[i]});
        graph[B[i]].pb({D[i], A[i]});
    }
}

long long Query(int S, int X[], int T, int Y[]){
    ll mn=LLONG_MAX, atb;
    atb=LLONG_MAX;
    fill(att, att+n, LLONG_MAX);
    priority_queue<pii, vector<pii>, greater<pii>>pq;
    for(int i=0; i<S; i++){
        pq.push({0, X[i]});
    }
    while(!pq.empty()){
        ll v=pq.top().se, t=pq.top().fi;
        pq.pop();
        if(att[v]<=t)
            continue;
        att[v]=t;
        for(auto x : graph[v]){
            pq.push({t+x.fi, x.se});
        }
    }
    for(int i=0; i<T; i++)
        atb=min(atb, att[Y[i]]);
    mn=min(mn, atb);
  return mn;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...