| Task: | Sadonkorjuu |
| Sender: | Niilo |
| Submission time: | 2022-12-02 19:47:40 +0200 |
| Language: | C++ (C++17) |
| Status: | COMPILE ERROR |
Compiler report
input/code.cpp: In function 'void lenght()':
input/code.cpp:13:35: error: reference to 'size' is ambiguous
13 | vector<pair<int,int>> web[size + 1];
| ^~~~
In file included from /usr/include/c++/11/string:54,
from /usr/include/c++/11/bits/locale_classes.h:40,
from /usr/include/c++/11/bits/ios_base.h:41,
from /usr/include/c++/11/ios:42,
from /usr/include/c++/11/ostream:38,
from /usr/include/c++/11/iostream:39,
from input/code.cpp:1:
/usr/include/c++/11/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
254 | size(const _Tp (&)[_Nm]) noexcept
| ^~~~
/usr/include/c++/11/bits/range_access.h:245:5: note: 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
245 | size(con...Code
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int size;
bool *types;
void lenght() {
// starting vector
vector<pair<int,int>> web[size + 1];
int a, b, c;
for (int i=0; i < size - 1; i++) {
cin >> a >> b >> c;
web[a].push_back({c, b});
web[b].push_back({c, a});
}
int sum = 0;
// array looped
priority_queue<pair<int,pair<int,int>>> q;
pair<int,pair<int,int>> p;
int best;
for (int i=1; i <= size; i++) {
if (!types[i]) continue;
// individual vector
best = -1e9;
q.push({0, {i, 0}});
while (!q.empty()) {
p = q.top();
q.pop();
// best route found -> clearing queue
if (p.first < best) {
while (!q.empty()) q.pop();
break;
};
for (auto b : web[p.second.first]) {
// port
if (!types[b.second]) best = max(best, p.first - b.first);
// field
else if (b.second != p.second.second) {
q.push({p.first - b.first, {b.second, p.second.first}});
};
}
}
sum -= best;
}
cout << sum << "\n";
}
int main() {
cin >> size;
types = new bool[size + 1];
for (int i=1; i <= size; i++) {
cin >> types[i];
}
lenght();
}
