제출 #1330043

#제출 시각아이디문제언어결과실행 시간메모리
1330043Nipphitch악어의 지하 도시 (IOI11_crocodile)C++20
100 / 100
270 ms44884 KiB
#include "crocodile.h"
#include <bits/stdc++.h>
#define a2 array <int,2>
using namespace std;
const int INF=1e9+7;

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
  vector <a2> d(N+5,{INF,INF});
  vector <vector <a2>> adj(N+5);
  priority_queue <a2,vector <a2>,greater <a2>> pq;
  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++){
    d[P[i]]={0,0};
    pq.push({0,P[i]});
  }
  while(!pq.empty()){
    auto [d_u,u]=pq.top();
    pq.pop();
    if(d_u>d[u][1]) continue;
    for(auto [v,w]:adj[u]){
      if(d_u+w<d[v][0]){
        if(d[v][0]<d[v][1]) pq.push({d[v][0],v});
        d[v][1]=d[v][0];
        d[v][0]=d_u+w;
      }
      else if(d_u+w<d[v][1]) pq.push({d[v][1]=d_u+w,v});
    }
  }
  return d[0][1];
}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...