제출 #976297

#제출 시각아이디문제언어결과실행 시간메모리
976297saayan007공장들 (JOI14_factories)C++17
15 / 100
2510 ms37460 KiB
#include "factories.h"
#include "bits/stdc++.h"
using namespace std;

const char nl = '\n';

using ll = long long;
#warning checkconstanst as per subtask
const int mxN = 5e3L + 10;

vector<pair<int, ll>> adj[mxN];
int n;

/* void Init(int N, int A[], int B[], int D[]) { */
void Init(signed N, signed A[], signed B[], signed D[]) {
    n = N;
    for(int i = 0; i < N - 1; ++i) {
        adj[A[i]].emplace_back(B[i], ll(D[i]));
        adj[B[i]].emplace_back(A[i], ll(D[i]));
    }
}

long long Query(signed S, signed X[], signed T, signed Y[]) {
    ll dist[n];
    for(int i = 0; i < n; ++i) dist[i] = -1;
    priority_queue<pair<ll, int>> pq;

    for(int i = 0; i < S; ++i) {
        dist[X[i]] = 0;
        pq.emplace(0, X[i]);
    }

    while(!pq.empty()) {
        int a = pq.top().second;
        ll d = -pq.top().first;
        pq.pop();
        if(dist[a] < d) continue;
        for(auto U : adj[a]) {
            int b = U.first; ll w = U.second;
            if(dist[b] == -1 || dist[b] > d + w) {
                dist[b] = d + w;
                pq.emplace(-dist[b], b);
            }
        }
    }
    ll res = -1;
    for(int i = 0; i < T; ++i) {
        if(res == -1) res = dist[Y[i]];
        else if(dist[Y[i]] != -1) res = min(res, dist[Y[i]]);
    }
    return res;
}

컴파일 시 표준 에러 (stderr) 메시지

factories.cpp:8:2: warning: #warning checkconstanst as per subtask [-Wcpp]
    8 | #warning checkconstanst as per subtask
      |  ^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...