Submission #1086091

#TimeUsernameProblemLanguageResultExecution timeMemory
1086091MrPavlitoCrocodile's Underground City (IOI11_crocodile)C++17
89 / 100
2071 ms133992 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 = 1e18; int n; vector<long long> dist(MAXN, inf); int cnt[MAXN]; vector<vector<pii>> graf(MAXN); multiset<pii> pq; void dikstra() { while(!pq.empty()) { auto it = pq.begin(); int u = it-> sc; int d = it-> fi; pq.erase(pq.find({d,u})); if(dist[u] != inf)continue; cnt[u]++; if(cnt[u] == 2) { dist[u] = d; for(auto x: graf[u]) { pq.insert({d+x.sc, 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]; } /* 5 7 2 0 2 4 0 3 3 3 2 2 2 1 10 0 1 100 0 4 7 3 4 9 1 3 14 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...