제출 #1337285

#제출 시각아이디문제언어결과실행 시간메모리
1337285madt공장들 (JOI14_factories)C++20
15 / 100
8086 ms56524 KiB
#include <bits/stdc++.h>
#include "factories.h"
#define pb push_back
#define fi first
#define se second
#define pii pair<ll,ll>
#define ll long long

using namespace std;

const int NN=5e5+5;
ll n;
vector<pair<ll, ll>> kaimini[NN];

void Init(int N, int A[], int B[], int D[]) {
    n=N;
    for(int i=0; i<N; i++){
        kaimini[A[i]].pb({B[i], D[i]});
        kaimini[B[i]].pb({A[i], D[i]});
    }
}

long long Query(int S, int X[], int T, int Y[]) {
    ll atb=LONG_LONG_MAX;
    vector<ll> dist(n+1, LONG_LONG_MAX);
    priority_queue<pii, vector<pii>, greater<pii>> pq;
    for(ll i=0; i<S; i++){
        pq.push({0, X[i]});
    }

    while(!pq.empty()){
        ll u=pq.top().se, d=pq.top().fi;
        pq.pop();
        if(dist[u]<=d)
            continue;
        dist[u]=d;
        for(auto x : kaimini[u])
            pq.push({d+x.se, x.fi});
    }

    for(int i=0; i<T; i++){
        atb=min(atb, dist[Y[i]]);
    }

    return atb;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...