제출 #980173

#제출 시각아이디문제언어결과실행 시간메모리
980173vjudge1봉쇄 시간 (IOI23_closing)C++17
8 / 100
120 ms20524 KiB
#include "closing.h" #include <bits/stdc++.h> #include <vector> #define MP make_pair #define f first #define s second typedef long long ll; using namespace std; int dijkstra(int N, int X, int Y, ll K, vector<vector<pair<ll,ll>>> &g) { priority_queue <pair<ll,ll>, vector <pair<ll,ll>>, greater<pair<ll,ll>>> pq; pq.push(MP(0, X)); pq.push(MP(0, Y)); int ans = 0; bool vis[N + 2]; for (int i = 0; i < N + 2; i++) vis[i] = false; while (!pq.empty()) { while (!pq.empty() && vis[pq.top().s]) pq.pop(); if (pq.empty()) break; auto p = pq.top(); vis[p.s] = true; if (K >= p.f) { K -= p.f; ans++; } else break; for (auto &it : g[p.s]) { if (vis[it.f]) continue; pq.push(MP(p.f + it.s, it.f)); } } return ans; } int max_score(int N, int X, int Y, long long K, std::vector<int> U, std::vector<int> V, std::vector<int> W) { vector <vector <pair<ll,ll>>> g(N + 2); for (int i = 0; i < N - 1; i++) { g[U[i]].push_back(MP(V[i], W[i])); g[V[i]].push_back(MP(U[i], W[i])); } return dijkstra(N, X, Y, K, g); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...