Submission #1295913

#TimeUsernameProblemLanguageResultExecution timeMemory
1295913hssaan_arifCrocodile's Underground City (IOI11_crocodile)C++20
0 / 100
1 ms824 KiB
#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 (sr != Dis[v]) continue; if (vi[v] != 1){ vi[v]++; continue; }else{ Dis[v] = sr; vi[v]++; 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}); } } } // 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...