3
map<TreeNode *, int> mpr;5
int minCameraCover(TreeNode *root) {8
memset(dp, -1, sizeof(dp));10
int t1 = dp_fun(root, 0), t2 = dp_fun(root, 1), t3 = dp_fun(root, 2);15
int dp_fun(TreeNode *cur, int st) {17
if (dp[nd][st] == -1) {26
dp[nd][st] = 1 + min({dp_fun(cur->left, 1) + dp_fun(cur->right, 1),27
dp_fun(cur->left, 1) + dp_fun(cur->right, 2),28
dp_fun(cur->left, 2) + dp_fun(cur->right, 1),29
dp_fun(cur->left, 2) + dp_fun(cur->right, 2)});31
dp[nd][st] = min({dp_fun(cur->left, 0) + dp_fun(cur->right, 0),32
dp_fun(cur->left, 0) + dp_fun(cur->right, 2),33
dp_fun(cur->left, 2) + dp_fun(cur->right, 0),34
dp_fun(cur->left, 2) + dp_fun(cur->right, 2)});36
dp[nd][st] = min({dp_fun(cur, 2), dp_fun(cur->left, 2) + dp_fun(cur->right, 0),37
dp_fun(cur->left, 0) + dp_fun(cur->right, 2),38
dp_fun(cur->left, 2) + dp_fun(cur->right, 2)});44
void adres(TreeNode *cur, int &cnt) {51
adres(cur->left, cnt);52
adres(cur->right, cnt);