Advertisement
ivnikkk

Untitled

Jul 17th, 2022
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. function dfs(v: int, p: int, gr: int[][], dp: int[]){
  2. dp[v] = 0;
  3. let x = 0;
  4. for(let i = 0; i < gr[v].length(); i += 1){
  5. let u = gr[v][i];
  6. if(u != p){
  7. dfs(u, v, gr, dp);
  8. dp[v] += dp[u];
  9. if(dp[u] == 0){
  10. x += 1;
  11. }
  12. }
  13. }
  14. if(x > 0){
  15. x -= 1;
  16. }
  17. dp[v] += x;
  18. }
  19. function max(a: int, b: int)->int{
  20. if(a > b){
  21. return a;
  22. }
  23. return b;
  24. }
  25. function dfs2(v: int, p: int, gr: int[][], dp: int[], ans: int[]){
  26. let sum = 1;
  27. let x = 0;
  28. for(let i = 0; i < gr[v].length(); i += 1) {
  29. let u = gr[v][i];
  30. sum += dp[u];
  31. if (dp[u] == 0){
  32. x+=1;
  33. }
  34. }
  35. ans.push(sum + max(0, x - 1));
  36. for(let i = 0; i < gr[v].length(); i += 1){
  37. let u = gr[v][i];
  38. if(u != p){
  39. let cur = 0;
  40. if(dp[u] == 0){
  41. cur+=1;
  42. }
  43. dp[v] = sum - 1 - dp[u] + max(0, x - 1 - cur);
  44. dfs2(u, v, gr, dp, ans);
  45. }
  46. }
  47. }
  48. function solve(input: string) -> string {
  49. let gr: int[][]=[];
  50. let dp: int[] = [];
  51. let ans: int[] = [];
  52. let lines = input.split("");
  53. let n = int(lines[0]);
  54. for(let i = 0; i < n; i+=1){
  55. gr.push([]);
  56. }
  57. for(let i = 1; i < n; i+=1){
  58. let l = input.split(" ");
  59. let u = int(l[0]);
  60. let v = int(l[1]);
  61. u-=1;
  62. v-=1;
  63. gr[u].push(v);
  64. gr[v].push(u);
  65. }
  66. dfs(0,-1,gr,dp);
  67. dfs2(0,-1,gr,dp,ans);
  68. ans.sort();
  69. let out = string(ans[0]);
  70. return out;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement