#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
int main()
{
vector<int>S = {4, 5};
vector<pair<int, int> >tree;
tree.push_back({1,2});
tree.push_back({2,3});
tree.push_back({3,4});
tree.push_back({4,5});
// tree.push_back({2,6});
// tree.push_back({4,7});
// tree.push_back({7,8});
vector<int>parent(tree.size() + 2);
parent[1] = -1;
for(auto edge: tree)
{
parent[edge.second] = edge.first;
}
unordered_map<int, bool>edge_tracker(false);
for(auto node: S)
{
int current_node = node;
int parent_node;
while(parent[current_node] != -1)
{
parent_node = parent[current_node];
if(edge_tracker.count(parent_node + current_node)) break;
else edge_tracker[parent_node + current_node] = true;
current_node = parent_node;
}
}
cout << "final ans: " << 2*(edge_tracker.size()) << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8dW5vcmRlcmVkX21hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgoKCmludCBtYWluKCkKewogICAgdmVjdG9yPGludD5TID0gezQsIDV9OwoKICAgIHZlY3RvcjxwYWlyPGludCwgaW50PiA+dHJlZTsKCiAgICB0cmVlLnB1c2hfYmFjayh7MSwyfSk7CiAgICB0cmVlLnB1c2hfYmFjayh7MiwzfSk7CiAgICB0cmVlLnB1c2hfYmFjayh7Myw0fSk7CiAgICB0cmVlLnB1c2hfYmFjayh7NCw1fSk7CiAgICAvLyB0cmVlLnB1c2hfYmFjayh7Miw2fSk7CiAgICAvLyB0cmVlLnB1c2hfYmFjayh7NCw3fSk7CiAgICAvLyB0cmVlLnB1c2hfYmFjayh7Nyw4fSk7CgogICAgdmVjdG9yPGludD5wYXJlbnQodHJlZS5zaXplKCkgKyAyKTsKCiAgICBwYXJlbnRbMV0gPSAtMTsKCiAgICBmb3IoYXV0byBlZGdlOiB0cmVlKQogICAgewogICAgICAgIHBhcmVudFtlZGdlLnNlY29uZF0gPSBlZGdlLmZpcnN0OwogICAgfQoKICAgIHVub3JkZXJlZF9tYXA8aW50LCBib29sPmVkZ2VfdHJhY2tlcihmYWxzZSk7CgogICAgZm9yKGF1dG8gbm9kZTogUykKICAgIHsKICAgICAgICBpbnQgY3VycmVudF9ub2RlID0gbm9kZTsKICAgICAgICBpbnQgcGFyZW50X25vZGU7CiAgICAgICAgd2hpbGUocGFyZW50W2N1cnJlbnRfbm9kZV0gIT0gLTEpCiAgICAgICAgewogICAgICAgICAgICBwYXJlbnRfbm9kZSA9IHBhcmVudFtjdXJyZW50X25vZGVdOwogICAgICAgICAgICBpZihlZGdlX3RyYWNrZXIuY291bnQocGFyZW50X25vZGUgKyBjdXJyZW50X25vZGUpKSBicmVhazsKICAgICAgICAgICAgZWxzZSBlZGdlX3RyYWNrZXJbcGFyZW50X25vZGUgKyBjdXJyZW50X25vZGVdID0gdHJ1ZTsKICAgICAgICAgICAgY3VycmVudF9ub2RlID0gcGFyZW50X25vZGU7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgImZpbmFsIGFuczogIiA8PCAyKihlZGdlX3RyYWNrZXIuc2l6ZSgpKSA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9