제출 #1081341

#제출 시각아이디문제언어결과실행 시간메모리
1081341nrg_studio악어의 지하 도시 (IOI11_crocodile)C++17
89 / 100
326 ms78884 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define pii pair<ll,ll> #define f first #define s second #define FOR(i, a, b) for (int i = (a); i < (b); i++) #define F0R(i, a) for (int i = 0; i < (a); i++) ll ans; ll travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) { ios::sync_with_stdio(false); cin.tie(0); vector<vector<pii>> adj(n); F0R(i,m) { adj[r[i][0]].pb({r[i][1],l[i]}); adj[r[i][1]].pb({r[i][0],l[i]}); } vector<pii> mn(n,{LLONG_MAX,LLONG_MAX}); priority_queue<pii,vector<pii>,greater<pii>> pq; F0R(i,k) { mn[p[i]] = {0,0}; pq.push({0,p[i]}); } while (pq.size()) { pii cur = pq.top(); pq.pop(); if (cur.f != mn[cur.s].s) {continue;} for (pii qwerty : adj[cur.s]) { int cand = qwerty.s+cur.f, x = qwerty.f; if (cand < mn[x].s) { if (cand <= mn[x].f) { mn[x].s = mn[x].f; mn[x].f = cand; } else {mn[x].s = cand;} if (mn[x].s!=INT_MAX) {pq.push({mn[x].s,x});} } } } ans = mn[0].s; //return mn[0].s << '\n'; return ans; } /* int main() { int n, m, k; cin >> n >> m >> k; int r[m][2],l[m],p[k]; F0R(i,m) {cin >> r[i][0]>>r[i][1]>>l[i];} F0R(i,k) {cin >> p[i];} ll x = travel_plan(n,m,r,l,k,p); cout<<ans; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...