#include <bits/stdc++.h>
#include "crocodile.h"
using namespace std;
using ll = long long;
const int MAXN = 1e5 + 10;
int chamber[MAXN];
int marc[MAXN];
ll dist[MAXN][2];
vector<pair<int, int>> adj[MAXN];
int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]){
for(int i=0; i<n; i++) dist[i][0] = dist[i][1] = 1e18;
for(int i=0; i<k; i++) chamber[p[i]] = 1;
for(int i=0; i<m; i++){
adj[r[i][0]].push_back({r[i][1], l[i]});
adj[r[i][1]].push_back({r[i][0], l[i]});
}
priority_queue<pair<ll, int>> q;
for(int i=0; i<n; i++){
if(chamber[i]){
q.push({0, i});
dist[i][0] = dist[i][1] = 0;
}
}
while(!q.empty()){
int v = q.top().second; q.pop();
if(marc[v]) continue;
marc[v] = 1;
for(auto [u, w] : adj[v]){
if(dist[v][1] + w <= dist[u][0]){
dist[u][1] = dist[u][0];
dist[u][0] = dist[v][1] + w;
} else if(dist[v][1] + w < dist[u][1]) dist[u][1] = dist[v][1] + w;
q.push({-dist[u][1], u});
}
}
return dist[0][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... |