제출 #1088003

#제출 시각아이디문제언어결과실행 시간메모리
1088003T0p_악어의 지하 도시 (IOI11_crocodile)C++14
100 / 100
815 ms117556 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; const int MAX_N = 100000 + 5; struct Dijkstra { int node; long long weight; bool operator < (const Dijkstra & o) const { return weight > o.weight; } }; int visited[MAX_N]; long long dis[MAX_N]; vector<pair<int, long long>> g[MAX_N]; int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { for (int i=0 ; i<M ; i++) { g[R[i][0]].push_back({ R[i][1], L[i] }); g[R[i][1]].push_back({ R[i][0], L[i] }); } for (int i=0 ; i<N ; i++) { dis[i] = 2e9; } priority_queue<Dijkstra> dijkstra; for (int i=0 ; i<K ; i++) { dis[P[i]] = 0; visited[P[i]] = 1; dijkstra.push({ P[i], 0 }); } while (!dijkstra.empty()) { int node = dijkstra.top().node; long long weight = dijkstra.top().weight; dijkstra.pop(); if (visited[node] == 2) continue; visited[node]++; if (visited[node] == 2) { dis[node] = weight; for (pair<int, long long> edge : g[node]) { dijkstra.push({ edge.first, weight + edge.second }); } } } return dis[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...