#include "factories.h"
#include <bits/stdc++.h>
#define int long long
using namespace std;
vector<pair<int, int>> neighbors[500005];
int n;
void Init(signed N, signed A[], signed B[], signed D[]) {
n = N;
for(int i = 0 ; i < n - 1; i++) {
neighbors[A[i]].push_back({B[i], D[i]});
neighbors[B[i]].push_back({A[i], D[i]});
}
}
long long Query(signed S, signed X[], signed T, signed Y[]) {
bool seen[n];
memset(seen, false, sizeof(seen));
vector<pair<int, int>>v;
priority_queue p(v.begin(), v.end(), greater<pair<int, int>>());
set<int> end;
for(int i = 0; i < T; i++) {
end.insert(Y[i]);
}
for(int i = 0; i < S; i++) {
p.push({0, X[i]});
}
while(!p.empty()) {
int dist = p.top().first;
int node = p.top().second;
p.pop();
if(!seen[node]) {
seen[node] = true;
if(end.contains(node)) return dist;
for(pair<int, int> i : neighbors[node]) {
if(!seen[i.first]) {
p.push({dist + i.second, i.first});
}
}
}
}
return -1 ;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |