| Task: | Laskettelukeskus |
| Sender: | Aatos |
| Submission time: | 2023-11-04 21:49:15 +0200 |
| Language: | C++ (C++20) |
| Status: | COMPILE ERROR |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:74:57: error: invalid initialization of reference of type 'const std::vector<long unsigned int>&' from expression of type 'std::vector<unsigned int>'
74 | std::vector<Node*> nodes = create_nodes(num_slopes, times_per_slope);
| ^~~~~~~~~~~~~~~
input/code.cpp:40:79: note: in passing argument 2 of 'std::vector<Node*> create_nodes(uint32_t, const std::vector<long unsigned int>&)'
40 | std::vector<Node*> create_nodes(uint32_t amount, const std::vector<uint64_t>& values)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~Code
#include <iostream>
#include <string>
#include <vector>
#include <stdint.h>
#include <cassert>
#include <stdexcept>
class Node
{
public:
Node(uint64_t val) : m_val(val) {}
uint64_t get_val()
{
return m_val;
}
void add_child(Node* child)
{
assert(child);
m_children.push_back(child);
}
uint64_t evalualte()
{
uint64_t child_sum = 0u;
for (Node* child : m_children)
{
child_sum += child->evalualte();
}
return std::max(child_sum, m_val);
}
private:
uint64_t m_val;
std::vector<Node*> m_children;
};
std::vector<Node*> create_nodes(uint32_t amount, const std::vector<uint64_t>& values)
{
std::vector<Node*> output;
for (uint32_t i = 0; i < amount; i++)
{
output.push_back(new Node(values.at(i)));
}
return output;
}
int main()
{
// inputs
uint32_t num_slopes;
std::cin >> num_slopes;
std::vector<std::vector<uint32_t> > connections(num_slopes - 1);
for (uint32_t i = 0; i < num_slopes - 1; i++)
{
for (uint32_t j = 0; j < 2; j++)
{
uint32_t input;
std::cin >> input;
connections.at(i).push_back(input);
}
}
std::vector<uint32_t> times_per_slope(num_slopes);
for (uint32_t i = 0; i < num_slopes; i++)
{
std::cin >> times_per_slope.at(i);
}
// nodes
std::vector<Node*> nodes = create_nodes(num_slopes, times_per_slope);
for (uint32_t i = 0; i < connections.size(); i++)
{
const uint32_t from = connections[i][0];
const uint32_t to = connections[i][1];
nodes[from - 1]->add_child(nodes[to - 1]);
}
//output
std::cout << nodes.at(0)->evalualte() << std::endl;
return 0;
}