제출 #1192416

#제출 시각아이디문제언어결과실행 시간메모리
1192416julia_08악어의 지하 도시 (IOI11_crocodile)C++20
100 / 100
574 ms60444 KiB
#include <bits/stdc++.h> #include "crocodile.h" using namespace std; using ll = long long; const int MAXN = 1e5 + 10; int chamber[MAXN]; int marc[MAXN]; ll dist[MAXN][2]; vector<pair<int, int>> adj[MAXN]; int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]){ for(int i=0; i<n; i++) dist[i][0] = dist[i][1] = 1e18; for(int i=0; i<k; i++) chamber[p[i]] = 1; 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]}); } priority_queue<pair<ll, int>> q; for(int i=0; i<n; i++){ if(chamber[i]){ q.push({0, i}); dist[i][0] = dist[i][1] = 0; } } while(!q.empty()){ int v = q.top().second; q.pop(); if(marc[v]) continue; marc[v] = 1; for(auto [u, w] : adj[v]){ if(dist[v][1] + w <= dist[u][0]){ dist[u][1] = dist[u][0]; dist[u][0] = dist[v][1] + w; } else if(dist[v][1] + w < dist[u][1]) dist[u][1] = dist[v][1] + w; q.push({-dist[u][1], u}); } } return dist[0][1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...