Submission #1304698

#TimeUsernameProblemLanguageResultExecution timeMemory
1304698quollcucumber`Factories (JOI14_factories)C++20
0 / 100
8089 ms43304 KiB
#include "factories.h"
#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int>> neighbors[500005];
int n;
void Init(int N, int A[], int B[], int 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(int S, int X[], int T, int 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...