Submission #1086079

#TimeUsernameProblemLanguageResultExecution timeMemory
1086079MrPavlitoCrocodile's Underground City (IOI11_crocodile)C++17
0 / 100
2 ms3416 KiB
#include "crocodile.h" #include <bits/stdc++.h> //#define int long long #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define sc second #define endl "\n" #define pii pair<int,int> using namespace std; const int MAXN = 1e5+5; const int mod7 = 1e9+7; const long long inf = 1e9; int n; vector<long long> dist(MAXN, inf); int cnt[MAXN]; vector<vector<pii>> graf(MAXN); set<pii> pq; void dikstra() { while(!pq.empty()) { auto it = pq.begin(); int u = it-> sc; int d = it-> fi; pq.erase(it); if(dist[u] != inf)continue; cnt[u]++; if(cnt[u] == 2) { dist[u] = d; for(auto x: graf[u]) { if(dist[x.fi] > dist[u] + x.sc) { pq.erase({dist[x.fi], x.fi}); dist[x.fi] = dist[u] + x.sc; pq.insert({dist[x.fi], x.fi}); } } } } } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { n = N; for(int i=0; i<M; i++) { graf[R[i][0]].pb({R[i][1], L[i]}); graf[R[i][1]].pb({R[i][0], L[i]}); } for(int i = 0; i<K; i++) { for(auto x: graf[P[i]]) { pq.insert(mp(x.sc, x.fi)); } dist[P[i]] = 0; } //for(auto x: pq)cout << x.fi << " " << x.sc << endl; dikstra(); return dist[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...