Submission #1008039

#TimeUsernameProblemLanguageResultExecution timeMemory
1008039overwatch9Swapping Cities (APIO20_swap)C++17
0 / 100
223 ms16428 KiB
#include "swap.h" #include <bits/stdc++.h> using namespace std; vector <vector <pair <int, int>>> adj; int n, m; multiset <int> d; void init(int N, int M, vector<int> U, vector<int> V, vector<int> W) { adj.resize(N+1); n = N; m = M; for (int i = 0; i < M; i++) { adj[U[i]].push_back({V[i], W[i]}); adj[V[i]].push_back({U[i], W[i]}); d.insert(W[i]); } } int getMinimumFuelCapacity(int x, int y) { if (n == 2) return -1; if (n == 3 && x != 0 && y != 0) return -1; if (n == 3) return max(adj[x][0].second, adj[y][0].second); if (x == 0 || y == 0) { if (adj[max(x, y)][0].second == *d.begin()) return *(++d.begin()); return adj[max(x, y)][0].second; } int ans = 0; d.erase(d.find(adj[x][0].second)); d.erase(d.find(adj[y][0].second)); ans = max({adj[x][0].second, adj[y][0].second, *(d.begin())}); d.insert(adj[x][0].second); d.insert(adj[y][0].second); return ans; } // int main() { // int N, M; // cin >> N >> M; // vector <int> u(M), v(M), w(M); // for (int i = 0; i < M; i++) // cin >> u[i] >> v[i] >> w[i]; // init(N, M, u, v, w); // int q; // cin >> q; // while (q--) { // int x, y; // cin >> x >> y; // cout << getMinimumFuelCapacity(x, y) << '\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...