Submission #1255751

#TimeUsernameProblemLanguageResultExecution timeMemory
1255751papauloCrocodile's Underground City (IOI11_crocodile)C++20
100 / 100
374 ms75772 KiB
#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;

#define MAXN 200200
vector<pair<int, int>> adj[MAXN];
int vcnt[MAXN];
using ll = long long;

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
  memset(vcnt, 0, sizeof(vcnt));
  for(int i=0;i<M;i++) {
    adj[R[i][0]].push_back({R[i][1], L[i]});
    adj[R[i][1]].push_back({R[i][0], L[i]});
  }
  for(int i=0;i<K;i++) vcnt[P[i]]++;
  priority_queue<pair<ll, int>> pq;
  for(int i=0;i<K;i++) pq.push({0, P[i]});
  while(!pq.empty()) {
    auto pr=pq.top();
    pq.pop();
    int v=pr.second;
    vcnt[v]++;
    if(vcnt[v]!=2) continue;
    if(v==0) return -pr.first;
    for(auto e : adj[v]) {
      pq.push({pr.first-e.second, e.first});
    }
  }
  return N;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...