#include <bits/stdc++.h>
using namespace std;
struct TreeNode{
TreeNode *left,*right;
int leftW,rightW;
TreeNode(){
left = right = nullptr;
leftW = rightW = 0;
}
};
int dp(TreeNode* root){
if(root == nullptr)return 0;
int p1 = dp(root->left);
int p2 = dp(root->right);
int u = 0;
if(p1>0){
p1 = min(p1,root->leftW);
}
if(p2>0){
p2 = min(p2,root->rightW);
}
if(root->left != nullptr){
if(root->left->left == nullptr && root->left->right == nullptr) u = u + root->leftW;
}
if(root->right != nullptr){
if(root->right->left == nullptr && root->right->right == nullptr) u = u + root->rightW;
}
u = u+p1;
u = u +p2;
return u;
}
int main() {
TreeNode* root = new TreeNode();
TreeNode* n1 = new TreeNode();
TreeNode* n2 = new TreeNode();
TreeNode* n3 = new TreeNode();
TreeNode* n4 = new TreeNode();
TreeNode* n5 = new TreeNode();
root->left = n1;
root->leftW= 5;
root->right = n2;
root->rightW = 8;
n1->left = n3;
n1->leftW = 4;
n1->right = n4;
n1->rightW = 2;
n2->right = n5;
n2->rightW = 3;
int answer = dp(root);
cout<<answer;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgVHJlZU5vZGV7CiBUcmVlTm9kZSAqbGVmdCwqcmlnaHQ7CiBpbnQgbGVmdFcscmlnaHRXOwogVHJlZU5vZGUoKXsKIGxlZnQgPSAgcmlnaHQgPSBudWxscHRyOwogbGVmdFcgPSByaWdodFcgPSAwOwogCn0KfTsKaW50IGRwKFRyZWVOb2RlKiByb290KXsKaWYocm9vdCA9PSBudWxscHRyKXJldHVybiAwOwppbnQgcDEgPSBkcChyb290LT5sZWZ0KTsKaW50IHAyID0gZHAocm9vdC0+cmlnaHQpOwppbnQgdSA9IDA7CiAgIGlmKHAxPjApewogICAgCXAxID0gbWluKHAxLHJvb3QtPmxlZnRXKTsKICAgIH0KICAgIGlmKHAyPjApewogICAgCXAyID0gbWluKHAyLHJvb3QtPnJpZ2h0Vyk7CiAgICB9CmlmKHJvb3QtPmxlZnQgIT0gbnVsbHB0cil7CiBpZihyb290LT5sZWZ0LT5sZWZ0ID09IG51bGxwdHIgJiYgcm9vdC0+bGVmdC0+cmlnaHQgPT0gbnVsbHB0cikgdSA9IHUgKyByb290LT5sZWZ0VzsKfQppZihyb290LT5yaWdodCAhPSBudWxscHRyKXsKIGlmKHJvb3QtPnJpZ2h0LT5sZWZ0ID09IG51bGxwdHIgJiYgcm9vdC0+cmlnaHQtPnJpZ2h0ID09IG51bGxwdHIpIHUgPSB1ICsgcm9vdC0+cmlnaHRXOwp9CnUgPSB1K3AxOwp1ID0gdSArcDI7CnJldHVybiB1Owp9CmludCBtYWluKCkgewogICAgVHJlZU5vZGUqIHJvb3QgPSBuZXcgVHJlZU5vZGUoKTsKCSBUcmVlTm9kZSogbjEgPSBuZXcgVHJlZU5vZGUoKTsKICAgICBUcmVlTm9kZSogbjIgPSBuZXcgVHJlZU5vZGUoKTsKVHJlZU5vZGUqIG4zID0gbmV3IFRyZWVOb2RlKCk7ClRyZWVOb2RlKiBuNCA9IG5ldyBUcmVlTm9kZSgpOwpUcmVlTm9kZSogbjUgPSBuZXcgVHJlZU5vZGUoKTsKCnJvb3QtPmxlZnQgPSBuMTsKICAgIHJvb3QtPmxlZnRXPSA1OwogCiAgICByb290LT5yaWdodCA9IG4yOwogICAgcm9vdC0+cmlnaHRXID0gODsKIAogCiAgICBuMS0+bGVmdCA9IG4zOwogICAgbjEtPmxlZnRXID0gNDsKIAogICAgbjEtPnJpZ2h0ID0gbjQ7CiAgICBuMS0+cmlnaHRXID0gMjsKIAogCiAgICBuMi0+cmlnaHQgPSBuNTsKICAgIG4yLT5yaWdodFcgPSAzOwogCiAgICBpbnQgYW5zd2VyID0gZHAocm9vdCk7IAogICAgY291dDw8YW5zd2VyOwogCiAKICAgIHJldHVybiAwOwogCn0=