This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "swap.h"
#include <vector>
#include <utility>
#include <iostream>
#include <algorithm>
std::vector<int> r[100010];
std::vector<std::pair<int, int> > w, w1;
int mx_ = 0;
int subt = 1;
bool cmp(std::pair<int, int> a, std::pair<int, int> b) {
return a.first < b.first;
}
void init(int N, int M, std::vector<int> U, std::vector<int> V, std::vector<int> W) {
std::vector<int> next[N + 1];
for(int i = 0; i < M; i++) {
r[U[i]].push_back(i);
r[V[i]].push_back(i);
next[U[i]].push_back(V[i]);
next[V[i]].push_back(U[i]);
mx_ = std::max(mx_, W[i]);
w.push_back({W[i], i});
w1.push_back({W[i], i});
}
for(int i = 0; i < N; i++)
if(next[i].size() != 2)
mx_ = -1;
if(N > 3 && M == N - 1 && next[0].size() == M)
subt = 2;
sort(w.begin(), w.end(), cmp);
}
int getMinimumFuelCapacity(int X, int Y) {
if(subt == 1)
return mx_;
std::vector<std::pair<int, int> > W = w;
std::vector<std::pair<int, int> > W1 = w1;
if(X > Y)
std::swap(X, Y);
int a = W1[r[X].back()].first;
int b = W1[r[Y].back()].first;
std::pair<int, int> x = W1[r[X].back()];
std::pair<int, int> y = W1[r[Y].back()];
if(X == 0) {
a = b;
x = y;
}
int mx = std::max(a, b);
if(std::lower_bound(W.begin(), W.end(), x) != W.end())
W.erase(std::lower_bound(W.begin(), W.end(), x));
if(X != 0 && std::lower_bound(W.begin(), W.end(), y) != W.end())
W.erase(std::lower_bound(W.begin(), W.end(), y));
return std::max(mx, W[0].first);
}
Compilation message (stderr)
swap.cpp: In function 'void init(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
swap.cpp:33:46: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
33 | if(N > 3 && M == N - 1 && next[0].size() == M)
| ~~~~~~~~~~~~~~~^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |