Submission #1014245

#TimeUsernameProblemLanguageResultExecution timeMemory
1014245adrielcpFactories (JOI14_factories)C++17
15 / 100
8068 ms80240 KiB
#include <bits/stdc++.h> #include "factories.h" using namespace std; #define ll long long const ll INF = 1e18; #define info pair<ll,ll> vector<vector<info>> adj; int n; void Init(int N, int A[], int B[], int D[]) { n = N; adj = vector<vector<info>>(n, vector<info>()); for (int i = 0; i < n-1; i++) { adj[A[i]].push_back({B[i], D[i]}); adj[B[i]].push_back({A[i], D[i]}); } } long long Query(int s, int X[], int t, int Y[]) { priority_queue<info, vector<info>, greater<info>> pq; for (int i = 0; i < s; i++) pq.push({0, X[i]}); vector<ll> dist(n,INF); // closest dist to any X while (!pq.empty()) { auto [cost, node] = pq.top();pq.pop(); if (cost > dist[node]) continue; dist[node] = cost; for (auto [children, w] : adj[node]) { if (cost+w < dist[children]) { dist[children] = cost+w; pq.push({cost+w, children}); } } } ll ans = INF; for (int i = 0; i < t; i++) { // cout << dist[Y[i]] << " t" << endl; ans = min(ans, dist[Y[i]]); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...