Submission #1364174

#TimeUsernameProblemLanguageResultExecution timeMemory
1364174TraianDanciuCrocodile's Underground City (IOI11_crocodile)C++20
100 / 100
485 ms59132 KiB
#include "crocodile.h"
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

const int MAXN = 100000;

vector<pair<int, int>> g[MAXN];
int dist[MAXN], viz[MAXN];
priority_queue<pair<int, int>> pq;

int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) {
  for(int i = 0; i < m; i++) {
    g[r[i][0]].push_back({r[i][1], l[i]});
    g[r[i][1]].push_back({r[i][0], l[i]});
  }
  for(int i = 0; i < k; i++) {
    viz[p[i]] = 1;
    pq.push({0, p[i]});
  }
  while(!pq.empty()) {
    auto now = pq.top();
    pq.pop();
    if(viz[now.second] == 0) {
      viz[now.second] = 1;
    } else if(viz[now.second] == 1) {
      viz[now.second] = 2;
      dist[now.second] = -now.first;
      for(auto edge : g[now.second]) {
        pq.push({-(dist[now.second] + edge.second), edge.first});
      }
    }
  }
  return dist[0];
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...