#ifdef t9unkubj
#include"debug.cpp"
//#include"template_no_debug.h"
#else 
#define dbg(...) 199958
#endif
#undef _GLIBCXX_DEBUG
#pragma GCC optimize("O3")
using namespace std;
#include<bits/stdc++.h>
using ll=long long;
using ull=unsigned long long;
template<class T>using vc=vector<T>;
template<class T>using vvc=vc<vc<T>>;
#define rep(i,n) for(ll i=0;i<(ll)(n);i++)
#define REP(i,j,n) for(ll i=(j);i<(ll)(n);i++)
#define DREP(i,n,m) for(ll i=(n);i>=(m);i--)
#define drep(i,n) for(ll i=((n)-1);i>=0;i--)
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
template<class T,class F>
bool chmin(T &x, F y){
    if(x>y){
        x=y;
        return true;
    }
    return false;
}
template<class T, class F>
bool chmax(T &x, F y){
    if(x<y){
        x=y;
        return true;
    }
    return false;
}
double pass_time=0;
#include "crocodile.h"
int solve(int n,int m,vc<int>u,vc<int>v,vc<int>l,int k,vc<int>p){
    vvc<pair<int,int>>g(n);
    rep(i,m){
        g[u[i]].push_back({v[i],l[i]});
        g[v[i]].push_back({u[i],l[i]});
    }
    dbg(g);
    vvc<ll>md(n,vc<ll>(2,2e18));
    using S=array<ll,3>;
    priority_queue<S,vc<S>,greater<>>que;
    rep(i,k){
        md[p[i]][0]=md[p[i]][1]=0;
        que.push({0,p[i],0});
    }
    vc<int>done(n);
    while(que.size()){
        auto [p,q,t]=que.top();que.pop();
        if(t){
            
            if(md[q][0]>p){
                md[q][1]=md[q][0];
                md[q][0]=p;
                if(md[q][1]<=1e9)que.push({md[q][1],q,0});
            }else if(md[q][1]>p){
                md[q][1]=p;
                que.push({md[q][1],q,0});
            }
        }
        if(md[q][1]!=p)continue;
        if(done[q])continue;
        done[q]=1;
        for(auto&[to,w]:g[q]){
            que.push({md[q][1]+w,to,1});
        }
    }
    dbg(md);
    ll ans=md[0][1];
    return ans;
}
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
    vc<int>u(M),v(M),l(M);
    rep(i,M){
        u[i]=R[i][0];
        v[i]=R[i][1];
        l[i]=L[i];
    }
    vc<int>p(K);
    rep(i,K)p[i]=P[i];
    return solve(N,M,u,v,l,K,p);
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |