Submission #483924

#TimeUsernameProblemLanguageResultExecution timeMemory
483924PoPularPlusPlus악어의 지하 도시 (IOI11_crocodile)C++17
100 / 100
501 ms44736 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define pb(e) push_back(e) #define sv(a) sort(a.begin(),a.end()) #define sa(a,n) sort(a,a+n) #define mp(a,b) make_pair(a,b) #define vf first #define vs second #define ar array #define all(x) x.begin(),x.end() const int inf = 0x3f3f3f3f; const int mod = 1000000007; const double PI=3.14159265358979323846264338327950288419716939937510582097494459230; bool remender(ll a , ll b){return a%b;} vector<pair<int,int> > adj[100002]; int dp[100002],dp1[100002]; void dijkstra(int p[], int k) { priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> q; for(int i = 0; i < k; i++){ q.push({0,p[i]}); dp[p[i]] = dp1[p[i]] = 0; } while (not q.empty()) { const auto [d, x] = q.top(); q.pop(); if (dp1[x] < d) continue; for (const auto &[y, w] : adj[x]) { int cur = d + w; if (cur < dp[y]) { swap(dp[y], cur); } if (cur < dp1[y]) { dp1[y] = cur; q.push(make_pair(dp1[y], y)); } } } } int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]){ for(int i = 0; i < m; i++){ adj[r[i][0]].pb(mp(r[i][1] , l[i])); adj[r[i][1]].pb(mp(r[i][0] , l[i])); } for(int i = 0; i < n; i++)dp[i] = dp1[i] = INT_MAX; dijkstra(p,k); /*for(int i = 0; i < n; i++){ cout << dp[i] << ' ' << dp1[i] << '\n'; }*/ return dp1[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...