Submission #1191565

#TimeUsernameProblemLanguageResultExecution timeMemory
1191565Br3ad악어의 지하 도시 (IOI11_crocodile)C++20
100 / 100
338 ms50336 KiB
#include <iostream> #include <fstream> #include <iomanip> #include <algorithm> #include <functional> #include <numeric> #include <cstring> #include <string> #include <cmath> #include <vector> #include <queue> #include <stack> #include <set> #include <map> using namespace std; #define ll long long #define ull unsigned long long #define f first #define s second #define PF push_front #define PB push_back #define MP make_pair #define pi pair<int, int> #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define max(a, b) ((a > b)? a : b) #define min(a, b) ((a < b)? a : b) #define max3(a, b, c) max(max(a, b), c) #define min3(a, b, c) min(min(a, b), c) const int N = 1e3 + 5; const int M = 1e9 + 7; const int inf = 0x3f3f3f3f; const ll int INF = 1e18; int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]){ vector<vector<pi>> adj(n, vector<pi>()); vector<bool> vis1(n, false), vis2(n, false); 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])); } priority_queue<pi, vector<pi>, greater<pi>> pq; for(int i = 0; i < k; i++){ vis1[p[i]] = true; pq.push(MP(0, p[i])); } while(!pq.empty()){ auto [dis, cur] = pq.top(); pq.pop(); if(!vis1[cur]){ // Discard best path vis1[cur] = true; continue; } if(vis2[cur]) continue; vis2[cur] = true; if(cur == 0) return dis; for(auto [child, w] : adj[cur]){ if(vis2[child]) continue; pq.push(MP(dis + w, child)); } } return -1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...