Submission #893351

#TimeUsernameProblemLanguageResultExecution timeMemory
893351vjudge1Road Construction (JOI21_road_construction)C++17
5 / 100
10062 ms14940 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define all(x) x.begin(), x.end() #define size(x) (int)x.size() template<class S, class T> bool chmin(S &a, const T &b) { return a > b && (a = b) == b; } template<class S, class T> bool chmax(S &a, const T &b) { return a < b && (a = b) == b; } const int inf = 1e9 + 7; const int INF = 1e18 + 7; const int mod = 998244353; const int N = 250001; signed main() { cin.tie(nullptr)->sync_with_stdio(false); int n, k; cin >> n >> k; int x[n], y[n]; for (int i = 0; i < n; ++i) { cin >> x[i] >> y[i]; } auto dist = [&](int i, int j) { return abs(x[i] - x[j]) + abs(y[i] - y[j]); }; multiset<int> st; for (int i = 0; i < n; ++i) { priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q; q.push({0, i}); vector<int> d(n, INF); d[i] = 0; while (!q.empty()) { int v = q.top().second; if (q.top().first) { st.insert(q.top().first); if (size(st) > k) { st.erase(--st.end()); } } q.pop(); for (int j = i + 1; j < n; ++j) { if (chmin(d[j], d[v] + dist(v, j))) { q.push({d[j], j}); } } } } for (int i : st) { cout << i << '\n'; } }
#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...