Submission #1069041

#TimeUsernameProblemLanguageResultExecution timeMemory
1069041DeathIsAweCrocodile's Underground City (IOI11_crocodile)C++17
100 / 100
678 ms82196 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; bool visited[100000]; pair<int,int> dist[100000]; class compare { public: bool operator()(vector<int> a, vector<int> b) { if (a[0] == b[0]) { if (a[1] == b[1]) { return a[2] > b[2]; } return a[1] > b[1]; } return a[0] > b[0]; } }; int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) { vector<vector<pair<int,int>>> graph(100000); for (int i=0;i<m;i++) { graph[r[i][0]].push_back(make_pair(r[i][1], l[i])); graph[r[i][1]].push_back(make_pair(r[i][0], l[i])); } for (int i=0;i<100000;i++) { visited[i] = false; dist[i].first = INT_MAX; dist[i].second = INT_MAX; } priority_queue<vector<int>, vector<vector<int>>, compare> pq; vector<int> dum(3), top(3); for (int i=0;i<k;i++) { dum[0] = 0; dum[1] = 0; dum[2] = p[i]; pq.push(dum); dist[p[i]].first = 0; dist[p[i]].second = 0; } int bruh; while (pq.size() > 0) { top = pq.top(); pq.pop(); //cout << top[0] << ' ' << top[1] << ' ' << top[2] << '\n'; if (visited[top[2]]) {continue;} visited[top[2]] = true; for (pair<int,int> i: graph[top[2]]) { if (!visited[i.first]) { bruh = i.second + top[0]; if (bruh < dist[i.first].second) { dist[i.first].first = dist[i.first].second; dist[i.first].second = bruh; dum[0] = dist[i.first].first; dum[1] = dist[i.first].second; dum[2] = i.first; pq.push(dum); } else if (bruh < dist[i.first].first) { dist[i.first].first = bruh; dum[0] = dist[i.first].first; dum[1] = dist[i.first].second; dum[2] = i.first; pq.push(dum); } } } } //for (int i=0;i<n;i++) { // cout << dist[i].first << ' ' << dist[i].second << '\n'; //} return dist[0].first; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...