Submission #1161389

#TimeUsernameProblemLanguageResultExecution timeMemory
1161389NewtonabcCrocodile's Underground City (IOI11_crocodile)C++20
100 / 100
318 ms77028 KiB
#include "crocodile.h" #include<bits/stdc++.h> #define ll long long using namespace std; const int NN=1e5+10; vector<pair<ll,int>> adj[NN]; ll d[NN][2]; //second edge weight to go to i bool vs[NN]; priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<pair<ll,int>>> q; int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { for(int i=0;i<M;i++){ int u=R[i][0],v=R[i][1]; adj[u].push_back({v,L[i]}); adj[v].push_back({u,L[i]}); } for(int i=0;i<N;i++) d[i][0]=d[i][1]=LLONG_MAX; for(int i=0;i<K;i++) d[P[i]][0]=d[P[i]][1]=0,q.push({0,P[i]}); while(!q.empty()){ int u=q.top().second; q.pop(); if(vs[u]) continue; vs[u]=true; for(auto [v,w]:adj[u]){ if(d[u][1]+w<d[v][0]){ d[v][1]=d[v][0]; q.push({d[v][1],v}); d[v][0]=d[u][1]+w; } else if(d[u][1]+w<d[v][1]){ d[v][1]=d[u][1]+w; q.push({d[v][1],v}); } } } return d[0][1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...