#include "crocodile.h"
// #include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<queue>
#include<map>
using namespace std;
#define endl "\n"
#define pb push_back
// #define int long long
#define fi first
#define se second
const int N = 1e5 + 5, M = 1e9 + 7, LG = 20;
int n , A[N] ,m ,k, u , v , l , R[N][2] , L[N] , P[N];
vector<int> lis[N];
int travel_plan(int n, int m, int R[][2], int L[], int k, int P[])
{
int vi[n] = {} , Dis[N] = {};
map<pair<int,int> , int> mp , cn;
for (int i=0 ; i<n ; i++){
Dis[i] = 1e9;
}
for (int i=0 ; i<m ; i++){
int u = R[i][0] , v = R[i][1];
lis[u].pb(v);
lis[v].pb(u);
mp[{u,v}] = mp[{v,u}] = L[i];
}
priority_queue<pair<int,int> , vector<pair<int,int>> , greater<pair<int,int>>> pq;
for (int i=0 ; i<k ; i++){
Dis[P[i]] = 0;
pq.push({0 , P[i]});
// cn[P[i]] = 2;
vi[P[i]] = 1;
}
while(pq.size() && Dis[0] == 1e9){
int v = pq.top().se , sr = pq.top().fi ; pq.pop();
if (vi[v] != 1){
vi[v]++;
continue;
}else{
Dis[v] = sr;
for (int u : lis[v]){
if (cn[{Dis[v] + mp[{v,u}] , u}]>=2 || vi[u]>=2 || Dis[u]!=1e9) continue;
cn[{Dis[v] + mp[{v,u}] , u}]++;
pq.push({Dis[v] + mp[{v,u}] , u});
}
vi[v]++;
}
}
// cout << Dis[0] << endl;
return Dis[0];
}
// int main(){
// cin >> n >> m >> k;
// for (int i=0 ; i<m ; i++){
// cin >> u >> v >> l;
// R[i][0] = u;
// R[i][1] = v;
// L[i] = l;
// }
// for (int i=0 ; i<k ; i++){
// cin >> l;
// P[i] = l;
// }
// cout << travel_plan(n , m , R , 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... |