Submission #1295394

#TimeUsernameProblemLanguageResultExecution timeMemory
1295394hssaan_arifCrocodile's Underground City (IOI11_crocodile)C++20
89 / 100
2100 ms170764 KiB
#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;

#define endl "\n"
#define pb push_back
// #define int long long
#define fi first
#define se second

const int N = 3e5 + 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;
    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]});
        vi[P[i]] = 1;
    }
    
    while(pq.size()){
        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]){
                pq.push({Dis[v] + mp[{v,u}] , u});
            }
            vi[v]++;
        }
    }
    // cout << Dis[0] << endl;
    return Dis[0];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...