This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |