Submission #914402

#TimeUsernameProblemLanguageResultExecution timeMemory
914402duckindogSwapping Cities (APIO20_swap)C++14
17 / 100
1946 ms29240 KiB
#include "swap.h" #include<bits/stdc++.h> using namespace std; const int N = 1e3 + 10; int n, m; vector<pair<int, int>> ad[N]; void init(int N, int M, vector<int> U, vector<int> V, vector<int> W) { n = N; m = M; for (int i = 0; i < m; ++i) { int u = U[i], v = V[i], w = W[i]; ad[u].push_back({v, w}); ad[v].push_back({u, w}); } } int f[N][N]; void sktra(int x, int y) { memset(f, 63, sizeof f); using T = tuple<int, int, int>; priority_queue<T, vector<T>, greater<T>> q; q.emplace(f[x][y] = 0, x, y); while (q.size()) { int d, x, y; tie(d, x, y) = q.top(); q.pop(); if (d != f[x][y]) continue; for (auto duck : ad[x]) { int v, w; tie(v, w) = duck; if (v != y && f[v][y] > max(w, d)) q.emplace(f[v][y] = max(w, d), v, y); } for (auto duck : ad[y]) { int v, w; tie(v, w) = duck; if (v != x && f[x][v] > max(w, d)) q.emplace(f[x][v] = max(w, d), x, v); } } } int getMinimumFuelCapacity(int X, int Y) { sktra(X, Y); return f[Y][X] > 1e9 ? -1 : f[Y][X]; }
#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...