CSES - Datatähti 2023 alku - Results
Submission details
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();
}