#include <vector>
#include <array>
struct A
{
const unsigned int id;
std::vector<const A*> predecessors;
A(unsigned int id) : id(id) {}
void setPredecessors(std::vector<const A*> predecessors) { this->predecessors = predecessors; }
};
const std::array<A, 4>& get_registers() {
static std::array<A, 4> v =
{
A(0),
A(1),
A(2),
A(3),
};
if (v[0].predecessors.size()==0) { //initialize it
v[0].setPredecessors({&v[1],&v[2]});
//etc
}
return v;
}
const std::array<A, 4>& v = get_registers();
const A &a0 = v[0];
const A &a1 = v[1];
const A &a2 = v[2];
const A &a3 = v[3];
int main()
{
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFycmF5PgoKc3RydWN0IEEKewoJY29uc3QgdW5zaWduZWQgaW50IGlkOwoKCXN0ZDo6dmVjdG9yPGNvbnN0IEEqPiBwcmVkZWNlc3NvcnM7CgoJQSh1bnNpZ25lZCBpbnQgaWQpIDogaWQoaWQpIHt9Cgl2b2lkIHNldFByZWRlY2Vzc29ycyhzdGQ6OnZlY3Rvcjxjb25zdCBBKj4gcHJlZGVjZXNzb3JzKSAgeyB0aGlzLT5wcmVkZWNlc3NvcnMgPSBwcmVkZWNlc3NvcnM7IH0KfTsKCmNvbnN0IHN0ZDo6YXJyYXk8QSwgND4mIGdldF9yZWdpc3RlcnMoKSB7CiAgICBzdGF0aWMgc3RkOjphcnJheTxBLCA0PiB2ID0gCiAgICB7CiAgICAgICAgQSgwKSwKICAgICAgICBBKDEpLAogICAgICAgIEEoMiksCiAgICAgICAgQSgzKSwKICAgIH07CiAgICBpZiAodlswXS5wcmVkZWNlc3NvcnMuc2l6ZSgpPT0wKSB7IC8vaW5pdGlhbGl6ZSBpdAogICAgCXZbMF0uc2V0UHJlZGVjZXNzb3JzKHsmdlsxXSwmdlsyXX0pOwogICAgCS8vZXRjCiAgICB9CiAgICByZXR1cm4gdjsKfQoKY29uc3Qgc3RkOjphcnJheTxBLCA0PiYgdiA9IGdldF9yZWdpc3RlcnMoKTsKY29uc3QgQSAmYTAgPSB2WzBdOyAKY29uc3QgQSAmYTEgPSB2WzFdOyAKY29uc3QgQSAmYTIgPSB2WzJdOyAKY29uc3QgQSAmYTMgPSB2WzNdOwoKaW50IG1haW4oKQp7CglyZXR1cm4gMDsKfQ==