This documentation is automatically generated by online-judge-tools/verification-helper
This project is maintained by tsutaj
add(value, id)
value と直前の状態の識別子 id を与えて、状態を追加するget(id)
id を与えると、初期状態からここに至るまでの経路を復元したものが返ってくる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_;
};