Submission #1025720

#TimeUsernameProblemLanguageResultExecution timeMemory
1025720idasCrocodile's Underground City (IOI11_crocodile)C++11
100 / 100
409 ms71312 KiB
#include "crocodile.h" #include <bits/stdc++.h> #define FOR(i, begin, end) for(int i=(begin); i<(end); i++) #define pb push_back #define s second #define f first using namespace std; typedef pair<int, int> pii; const int MxN=1e5+10, INF=1e9+10; vector<pii> ad[MxN]; bool in[MxN]; int d[MxN]; int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) { FOR(i, 0, m) { ad[r[i][0]].pb({r[i][1],l[i]}); ad[r[i][1]].pb({r[i][0],l[i]}); } FOR(i, 0, n) d[i]=-1; priority_queue<pii, vector<pii>, greater<pii>> q; FOR(i, 0, k) { q.push({0,p[i]}); q.push({0,p[i]}); } while(!q.empty()){ int val=q.top().f, u=q.top().s; q.pop(); if(in[u]) continue; if(d[u]==-1){ d[u]=val; continue; } d[u]=val; in[u]=true; for(auto it : ad[u]){ int x=it.f, w=it.s; if(in[x]) continue; int nd=min(INF, d[u]+w); q.push({nd,x}); } } return d[0]==INF?-1:d[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...