Submission #234774

#TimeUsernameProblemLanguageResultExecution timeMemory
234774muhammad_hokimiyonCrocodile's Underground City (IOI11_crocodile)C++14
100 / 100
953 ms59972 KiB
#include "crocodile.h" #include <bits/stdc++.h> #define fi first #define se second #define ll long long #define dl double long using namespace std; const int NN = 2e6 + 7; const int maxn = 1e5 + 7; //const int M = 22; const int mod = 998244353; const ll inf = 1e18 + 7; const dl rf = 1e-14; const int B = sqrt(maxn); mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int b[maxn]; bool used[maxn]; vector < pair < int , int > > v[maxn]; vector < int > d(maxn , 2e9); vector < int > d1(maxn , 2e9); int travel_plan(int n, int m, int a[][2], int l[], int k, int p[]) { for( int i = 0; i < m; i++ ){ a[i][0] += 1 , a[i][1] += 1; } for( int i = 0; i < m; i++ ){ v[a[i][0]].push_back({ a[i][1] , l[i] }); v[a[i][1]].push_back({ a[i][0] , l[i] }); } set < pair < int , int > > s; for( int i = 0; i < k; i++ ){ p[i] += 1; d[p[i]] = 0; d1[p[i]] = 0; s.insert({ 0 , p[i] }); } while( !s.empty() ){ auto x = *s.begin(); s.erase(s.begin()); for( auto y : v[x.se] ){ if( d[y.fi] >= y.se + d1[x.se] ){ s.erase({ d1[y.fi] , y.fi }); d1[y.fi] = d[y.fi]; d[y.fi] = y.se + d1[x.se]; if( d1[y.fi] != 2e9 )s.insert({ d1[y.fi] , y.fi }); }else{ if( d1[y.fi] > y.se + d1[x.se] ){ s.erase({ d1[y.fi] , y.fi }); d1[y.fi] = y.se + d1[x.se]; s.insert({ d1[y.fi] , y.fi }); } } } } return d1[1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...