제출 #1008047

#제출 시각아이디문제언어결과실행 시간메모리
1008047overwatch9자매 도시 (APIO20_swap)C++17
7 / 100
235 ms20360 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 <= 3) return -1; int ans = 0; if (x == 0 || y == 0) { d.erase(d.find(adj[max(x, y)][0].second)); ans = max({adj[max(x, y)][0].second, *(++d.begin())}); } else { 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())}); } if (x == 0 || y == 0) { d.insert(adj[max(x, y)][0].second); } else { 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...