#include "factories.h"
#include <bits/stdc++.h>
#define pb push_back
#define pf push_front
using namespace std;
#define F first
#define S second
typedef long long ll;
#define pii pair <int, int>
#define pll pair <ll, ll>
typedef long double ld;
const ll N = 5 * 1e5 + 100, M = 4096 + 10, len = 21, inf = 1e18;
const ll mod = 1e9 + 7;
ll um(ll a, ll b){
return (1LL * a * b) % mod;
}
ll subr(ll a, ll b){
return ((1LL * a - b) % mod + mod) % mod;
}
int n;
ll dis[N];
vector <pll> q[N];
void Init(int nx, int a[], int b[], int d[]) {
n = nx;
for(int i = 0; i < n - 1; i++){
q[a[i]].pb(make_pair(b[i], d[i]));
q[b[i]].pb(make_pair(a[i], d[i]));
}
}
long long Query(int s, int x[], int t, int y[]) {
for(int i = 0; i < n; i++){
dis[i] = INT_MAX;
}
set <pll> st;
for(int i = 0; i < s; i++){
dis[x[i]] = 0;
st.insert(make_pair(0, x[i]));
}
while((ll)st.size() != 0){
ll v = st.begin()->S;
st.erase(st.begin());
for(int i = 0; i < (int)q[v].size(); i++){
pll u = q[v][i];
if(dis[u.F] > dis[v] + u.S){
st.erase(make_pair(dis[u.F], u.F));
dis[u.F] = dis[v] + u.S;
st.insert(make_pair(dis[u.F], u.F));
}
}
}
ll ans = LLONG_MAX;
for(int i = 0; i < t; i++){
ans = min(ans, dis[y[i]]);
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |