Submission #931163

#TimeUsernameProblemLanguageResultExecution timeMemory
931163PieArmyCrocodile's Underground City (IOI11_crocodile)C++17
100 / 100
494 ms113464 KiB
#include "crocodile.h"
#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define sp << " " <<
using namespace std;

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){
  vector<ll>komsu[N],cos[N];
  for(int i=0;i<M;i++){
    komsu[R[i][0]].pb(R[i][1]);
    komsu[R[i][1]].pb(R[i][0]);
    cos[R[i][0]].pb(L[i]);
    cos[R[i][1]].pb(L[i]);
  }
  //using wtf = pair<ll,int>;
  priority_queue<pair<ll,int>/*,vector<wtf>,greater<wtf>*/>pq;
  int say[N];for(int i=0;i<N;i++)say[i]=0;
  for(int i=0;i<K;i++){
    say[P[i]]=1;
    pq.push({0,P[i]});
  }
  while(pq.size()){
    ll sum=-pq.top().first;
    int pos=pq.top().second;
    //cout << sum sp pos << '\n';
    pq.pop();
    if(say[pos]==2)continue;
    say[pos]++;
    if(say[pos]==1)continue;
    if(!pos){
      return sum;
    }
    for(int i=0;i<ll(komsu[pos].size());i++){
      pq.push({-sum-cos[pos][i],komsu[pos][i]});
    }
  }
  return -1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...