#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;
const long long maxn=2*1e5;
long long n,m;
struct edge
{
    long long x,d;
    edge(){}
    edge(long long _x,long long _d)
    {
        x=_x;
        d=_d;
    }
    bool operator<(const edge&e)const
    {
        return e.d<d;
    }
};
vector<edge> v[maxn];
priority_queue<edge> q;
long long c[maxn],d[maxn];
void dijkstra()
{
    for(long long i=0;i<n;i++)
        if(c[i]==0)d[i]=1e18;
    while(q.size())
    {
        edge t=q.top();
        q.pop();
        c[t.x]++;
        if(c[t.x]!=2)
            continue;
        d[t.x]=t.d;
        for(long long i=0;i<v[t.x].size();i++)
        {
            edge nb=v[t.x][i];
            if(t.d+nb.d<=d[nb.x])
                q.push({nb.x,nb.d+t.d});
        }
    }
}
void ae(long long i,long long j,long long x)
{
    v[i].push_back({j,x});
    v[j].push_back({i,x});
}
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
    n=N;
    m=M;
    for(long long i=0;i<m;i++)
        ae(R[i][0],R[i][1],L[i]);
    for(long long i=0;i<K;i++)
    {
        c[P[i]]=1;
        q.push({P[i],0});
    }
    dijkstra();
    return d[0];
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |