cpp_library

This documentation is automatically generated by online-judge-tools/verification-helper

This project is maintained by tsutaj

:heavy_check_mark: Trace(経路復元)
(marathon/trace.cpp)

Verified with

Code

template <typename Tp>
class Trace {
public:
    Trace() = default;

    int add(const Tp& value, int parent) {
        log_.emplace_back(value, parent);
        return (int)log_.size() - 1;
    }

    vector<Tp> get(int index) const {
        vector<Tp> result;
        while (index >= 0) {
            result.emplace_back(log_[index].first);
            index = log_[index].second;
        }
        reverse(result.begin(), result.end());
        return result;
    }

private:
    vector<pair<Tp, int>> log_;
};
#line 1 "marathon/trace.cpp"
template <typename Tp>
class Trace {
public:
    Trace() = default;

    int add(const Tp& value, int parent) {
        log_.emplace_back(value, parent);
        return (int)log_.size() - 1;
    }

    vector<Tp> get(int index) const {
        vector<Tp> result;
        while (index >= 0) {
            result.emplace_back(log_[index].first);
            index = log_[index].second;
        }
        reverse(result.begin(), result.end());
        return result;
    }

private:
    vector<pair<Tp, int>> log_;
};
Back to top page