From 5c05458ff635b78189ec22ef8044877e4d62fbf0 Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Sun, 8 Jun 2025 17:26:41 +0800 Subject: [PATCH] Add solution and test-cases for problem 2049 --- .../1.png | Bin 0 -> 31824 bytes .../2.png | Bin 0 -> 2426 bytes .../README.md | 41 ++++++++----- .../Solution.go | 58 +++++++++++++++++- .../Solution_test.go | 13 ++-- 5 files changed, 89 insertions(+), 23 deletions(-) create mode 100644 leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/1.png create mode 100644 leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/2.png diff --git a/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/1.png b/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/1.png new file mode 100644 index 0000000000000000000000000000000000000000..43805c88835737c017a772fdc0363f6e83b6a039 GIT binary patch literal 31824 zcmZ^KbyyW&)b7xoB1$9OAPt9>?(Pz$yE_Ew1_|j9>5@2fBhuXs(%lVr{C(fO|J?_k zhr`U7J$vs}?|RqT;mV3q7^sA(003afNQ)$PiQ~XO@aCclq5x1G zi}v^t0sNo*leDS=0C>>=K)_c3xCbu<>;ix*8vyJZ0|0+20K9R?Xi^aXZy=h;Nr?k5 z|9)~>3lqUBNG>u85=dL9aJaBk-J@pzF2UG4DXPPa=DDW z-$W(9>&oVepwZhVV#=g*UOYaH)ypX2UZ3=LPiEEJ@L9M1@ILb75Fo`uh8NS$ zU#)iOtf+`IBw_tDW;<{NgCmd%uVouy=Z^Aq?B{tbHJU%~>M0tvstXb4dYiX*&zP;| z;uxvk!_mDjEhEX{oZ{1okArGV)CZ_c3XV!3k4NogG+AS8%gtx*6gxHDDrToCH+2%j zo8ge4UP3hS2s=s|g=RsuiIBdy9BFcWGzP!j7SGMU#GwWC9)mnatS?M%F<$oTmH-EPlD7xe>rZVEbvx3O- zFg@h4t*^{i-XtwVKr5b|?$YL<+e_pYb(B<$oZy#PqK^ za|K)MuE6Q>Bc-#RxE<75Lfs-@OP)P8^VJO4BcU1THFxHXWxkF*HF0 zc9ncy?s&XMW;}Z=`SKz6YvR2l1|>21WMt#?h#fhWuVPqkuW!^|k@bI`D7X8HdQ5kF ze)rm(|FY?>)7#X@S4|H31E+#}pYb5rmv)JVf&)>c9fk7d=xJU3`%cJ^CQ`5Rqc=IW z7zy{H9*2RirjY0O!(j5$LwIMhQA#Dh%{73RZp*8Y^gNeGpNTr_ui@Dp$-2bC@c0n6 z0>>*m%lxqM?e?(j?5$(rKvtA`i}VU}Swv@|u*SB(`0u4tk9 z@givaQ}&DT{4cC5qS&Bp|F(QWfEeLG^JVLg-$tgAkdLXX$#cBwPMr;RO3L0Ryv!bq zc2re-#2Nmah(Cb{XY=rIf-U8+ZC7h%N$gJ@ZW)cgQnA7 zCjzE>FDznnH0H@S-GKx3WQ9q)x zo3Xdf#I6k7<{SX|IMx%7Vtzw5?hTl(Sbn-68{dOPgpXLy_ZBx;y!PU_b@bWke-XTy z`;>j?e43BIW-;UO|O~4{=OoO9mGEJR;i87TKx`?oPBc0JL6qQy}r-a@7Q!iy6a<&enh2q-k0G0yFWR#x2V z*#speuAZ$a+>eKEA`LW5Sxlk}@5~o|R4har*_6A$1(3f}F{W?krP&!fsGNRHpG@=X zpf2er8ed7>)i-q(IH0N-eKC(d+>UKpuu) z!>nuDov)v?m1d3Egp8N@Bjmj1KE!BvKrN{Y(~`ZZE?U2{J49M#(Z}SfnNi8rYpvJ6 zPLLuHUIMn$T^#PG{88SW<8(Fy@aL`9hZe8Frgp}ofC7_~S-CfU_l4X0dLMsakznin z+IpZQgb-i#5^qobRH9N+`EqMv*NHPoZ`i&AY;!9@*8bp?lr?A)<9@H zX}=yn(cSdQi+zPjQLdqqCQnLkIv>%a9N!7eD+ z+kxHdy@ypskHK~dl$uBPl%;KRv<+L;GCIW0aJH|~|0!JCt7Z3vAIE6z&rWhTTED5N z6*4XwHW#m6ZZ6$1xs9?MFUmqI>zX1n*)2!9588BIwkH{h59csj3xy!%H@z|WQ=Lzr zp67HIZ8huvn&9u9&O0A99y~uhveF=%us;a$J{;o#Yd0C(zPsm3O4}znKb9qx2$#|GV%NQCgV_8yOxp7l!@en*+)EnMbPp&%Vu%Y;XUr);~3W>cfofB_i?TkJbKv@5aSLfd}td1pL40)hK~i)+uN;?)GHMju#soEh_K49lgH^v zB$j`fq$Q6JhsA7P?&1^CZo+A|+)XEz_%zvK35yxoPNkSnXHZhTMxBy{6dgu@jgk z3|j22q}XR|SP`nfx2lpn3CZ~7tYhH!mFge8JHJBr+$e02{~Hbk^V^~Rue;vgRkUk0 zpFTBE;1B_ky-~QzfV^4Z;1*&|Y0Vx6W@hiB-um?_Dzx(PVKSxfWi@A{d)F;c1epVT ze98NmF0yww1AqB2Io-cI%I^ZH&sL2f>J2Hl=;e8(0X9FcDU z=Z1T8DpNJyHYbL^Ml8qmxl2V11h(35mfB4?3D(K6b$jc(hJlTO$3e+@+>@5|{6$;{ zuPfx@K#;zFR2bs$4L<58y$O{*Ot!7l!pzB#D}Sa-GcMxS$OS68iT?U71vSm3>YYOz z{K#TyT(g_x{vST1p<8l>q@mP_=QZAgcrs%6k&Qct@$`(xyvh?1pL~(O9%PgUx5Hv1 zr@5y#n$TdRoU1_ZU!J`-R{aH`-5cw)@`OFs&!GgbC17}eEEpIXDnc1QiZm2~dT8rY z_mC*1DXeeL)z^PJFKF5?qhjl==%lLdrlgY*Wn|B#bax^MD%;OR4%l}Bbd%G-nvtgb z1=aG#7q6#W29Gr%m7k%js4Lo zO^4I~U-xN16QM4j{*P7cZ_Mnoi@MPnXxT`5f- zz5jyU6m{%J#PY3P;p3kFef~mV>fY$eW4|2Fi#cz$O69#5w9b<~u^%NzsSD%38U9l$ z#8^0LNNXu8KZE!eKP{=?uwD~VCe~Yymp4sMG}vO_RF?bTie_|exMvI8r`kz94y9ZP zjM&TEIX8Xgtxrf-Oq)0*GDpnndExP(ayG30JJ(n3$|QkY3L2S*q`@B7ge2>zSmh0U8jmRJx%#ZJ^6$96E~&XV^o4nMfZL_ z!GQ7Nd<2_!0BNiglqXja)Jxq6QIpNwX@q?fmQYlSK1;QP#JmQZnR&12H|_o+|Hcht zKS@r3c^h>-U{!O{IFecF-Y5VY0by_ryor#f$zM!jBWIeT5q&THsM0_XK+*Vmajl*# zm;$xq*x5f`LLFW#5`ACbaCmVQQ1)6;)^R;bSlDv`UGD6@Eo{WYMvlZv2%3ZnZunO_ zt*(G7WiY%WhWnboz>woP>L$v3OM1TiG19G;w~?=0$&)GIcAdDy;mPmeGj!s++`ll{ z+uQr}a8sxU2m221JNM-o3GMToo1K>B_uTrCnZvoopB}NTb@K+m@dkLl+ zRHMF6EIhDrdz0NO1IhFZ+R(H&jL5@7b&{22M0Tu`Iih*%F^l&5w}bEKMuex0*$#_M zht5kMl(vo8{b$rZhrbA(aP=hGD_NTI@p&Jg80{WzJ>o*ESW8aIEhoNZS#0FoFmZ}_ z2>ajANfXKUiZhwzgd7S?5606m2#u`r9; z0te({Ra7>xcHDeo*y3?^eY9vknx*j54GPn!zd~7lTg&QtUbHPHYMTd9N_Hg{SKM}-h za-a{E{Rf&%q&K+r!~FGQ9_A_%jlQudX1aN>6H*i`D?-1(i+yJEd%PV^=P~j#puN$>6k{SZVbZemw1_&GtzEZ7VfS^`C9Qom`)4HV^I)*S%h;QPKYO_GaF;Z}p{Q zZI&XLDWV%#tEDgXH7v1Uhrs*@`wRS8UxOD@!)G=0c{qaJ9L!bl;A(epD+Nj~8&8V#Y$(xtqXXHI;fFa9=~aGG}Gc8<%%epff=V{0U@$ z?HtVDb2jwaqZU4nX1AHE8qb$v)vgM#8?8WtEdjN((^z>Y7q|@3th>o9JU4Iivv4)^ zt?Nf<*ynPEK##NAs&>^&vo?G!&1_hK&#M@)FdZ}HdUCR|&sUZHcQ@6nt(U5zqMf6{ zFY-|TS%fcY>E9AMjn!`;d7gn@k@HqJzS=keb$^#8ULerg;gh-rgOx-+j)K;`nE(;w z*S}-Q?AhzwZqTylT0Cpi83diTlQU#+^m`cGDW)Rp)Bg!{z3bvRy2~FaHUzhk3d0#mz*@GgyXZ3+bpJDaj1* zedPo`ne$fu(zAD;>_+|Q4@Y(>dsZbp_F{7lxdy2)1>|hxU7-2`xB09NF%c?5edc&Z zF&7DcJ`5n#+%6`-ro+xoX=gG@)s$q7hMB4IG?|rlia#dHKT6SM0;gw_O;4t!74-O^u+8tzVzcl1i&0SQ^S@8O~9X4}V!38I+ z5ytT;->yGS;qd!6e4-y}eUu3zAjUF@OC9sSPiYnwtY9ft{+^H+cxJAg%RYZtffv8z zy^qR=#AT71l!Rp7a>SgLu9|N2@Ar9Ve@f2>_Dca+);-8vrCY{;;1BCkw&SEVAc|OZ6wYI#Oq^?N>9a9w;dbZ;3}L z7o3c@RRKJ0Tmq;Sl_HAu+ph`PVx?^38P8^R+ z@y!svHd9q<&ZK`+{_P}OLFf*~Q94tu-iSkQ`#*Fjfapp(Biz`R8?m`Fh@Lr-2X|j_ zVTzbCxXkraZ4-~^ySyY6h#$>GdO2CzUxg9>kQ#!AnU<9!Z$`cU!hI+mT(K(EZ0s1&D`tX=yTRH>!Yo#c3?$&@s^&M{FTxc(Ft|wVV4`i| zM+sGWJdBwWBT^!0Qs8bi^w8soQ-lG$@3eA%p-vlEYuD4ZIUWAN6od1XJ$|PEMFGh1 zD7aoP(X7JbBe1-Aj|&v>qjSYmp6_ zfZJ=4y}|ZO8f)ke2lB&ZOWi=u zu0!3u6eSaCadBMON5{(tij-NE&}G5*8awZF6xZAfp^JE~yf~`l*U^mAFw>4zfCar$RU;m|(9f{C(c6rC3!7Ua(Eu)HSJz=ZH1$C#2l`SVMg^{xnUIY;p zJWCoxLVE&*FG(Ta%%E>GA7r8JQ=RA8>Vrh|i?mWVEuX_;V3R`Bfq|{|nItX5uKEyF zN};xoQ&j|AMdfO00$4vuPrP+LG1BAs2pt}$_@g&okhN&U!S{GeVGuPoEdU8|bik@@ zJ+bbsCpo%xQDBv}w1O>PZxXz@inI*E>G<>cuQYyLbqomX575VOlH;Mia9j;q8l1o> zt9%sju2|W-yrL_@cjOl|ADz}x=d8sszxJv>(~Kn*{F7YxMY7J32cZ9va<%E2V3W>3 zNIJ~KQ2lydup6nzu1U(l5*4Kf_EZr6V7!v&;mL+Ivv+(;%`)#A%$TVcE+K!l-HjOR)NAvPZL zSKSxWMpA$1?c1=)K~4RE^j-e?wrIzQ_!c##w|HFl9F^17jy<_l!4n~kusj&UN^zE! zXfX`<_3M{(pCxwDTmw=7Fbp*{j@lCt@ zJsbTo^!&?U0p5&ch~lKl%Kjhz^7eD`@KB5hOY@YYq#2Qy>bN&wKVL3G# zR|DT>A!3E8+>DGw64nv1R?Zy-9k6RfWB04Yx@cpVop-Rnj)LO9xh8fLDa_DM^n>_k z#^;wNMSRA@w!ioJh3bc`dFLwt-p9>_6C&A#&|&gEA07`#oZl0C-=Jt-TIrt3I+QMp z(_iS8xs|DTF~l*-WY}_BH)}XJFhGIx{*MQd4|C$2-2LE@Px$21{7J~dw!xOln*sO2 z$>Pbq$M(E${&$$NQR7c0q-&7&1lLl%hxn2wS}Ub= zX6~9^6&=$ySvQ#8BmBhzdojhy=LsB2Nn!zy)1L5Ge_JNUzKr|kT<&-W7c2TebDgdU zZZuw5bEX;N1v{OE?j0tmO>;0TV?TWBwm@IY!x5ffsEd}&pSIdM^MK(gy$VFyOUI6{ zRRXDnz4ep!mz6f(hYEvcK$!@@G z$Kjx9tE+a?WV7z+p+4_OcAW}A;?6gGJ~63qBJbW*9%>3-^qAU1^-c8HHbU)F$5oTY zk?LSlaf}Oxw&l`Uh0yF!PI=x@oI(HjukIq1e00PQo0Vd@Y!HZE;pFQ#Z-}CQAAaqe zM+rLlW6=v2EcVgMtI1t=7=*J@v80*VWKE0l;%~b!QGWko;9yEY=oLS^hafnW9t4jL zq-g3}hEyZq15AxQCn2s8uYrI@owI?cbv9ro&Sg9fEv3gXkf5s7vCFI8QY;;V?qR)rZE?#gpj&{Hv_2?D^?|N0IYrx^%YIa?;Ra z9ifS&)lfQ%4W9Y+WE9eGadT&wLi0oIJ9{kJ=WB-zd#ph_t2U33#ohIlZ(Hu&$Hz(N zfE$s%g1Ig4OY5D$CZlP$c{_^8$1iDTrO!4sk7j57(SS`A#Iau; zFMGNkHfLf34hPTN8v)8`-Fwf{K+q8;9;3wCe2fye@Iw~YX2t*IX=rF@(XRPO7KP9} z+KQ7ff4pdN58%yIJjsbsrn~$t*N>p<^XKvI!oKZp`)Cmw`}TdHT`Xnx4-}rPdy61^ zUA~Pp7LCucw@d)GN_P#*V*#J`D*Ne8ZwvqKa1~pFJ_BU>Bt+)+&~I;|yH~epYIiJm z`fi#5*i0Z4IIqsbx0u8I*fnOT(Hv8(Jdg8c=lM2|I{>u^I1RaPM}=L>%90s$$NQic zdFzqwHf1fFiHVO!cNvYgtT6W>0w^ZIT|GYt4GauSV$>pqxDBQBuzxQTq&(7t+C@i1 z{8~J+^@Ht{`rKX9+Iy*!G1}E@Xg}MR%^=*SD@mKNlLL>e+7pLJ@luoUvezNlFrfMCVN61^uBhaACDi(7^?}<)d&{wks7>Zgo zuvY{zXzd@gPSZIy2(8`?sD5^{+Ki1lbi^Z8dr;szlkVUu!AjdzmfRWr<9oqeApTI^~E6(CTPnT*<2C+WiMtQS%!-^0L zlqx$9Un=sB=GJ0*(WDSv^ari5r{xui9Ex1-gBKT5AmzcFEOYsG!lSJdz1m+9b&_epC)Lc+Ch zgoEp^XD$_i3gLhYI>xT=rQfE&m*hypF$3dj`8s9e> zPY+lc{a-9ZY8a^gD{rc^iG1U0evR-SBkurF^2jwIBHKE`ln~p(8vb4y%ob zg`anU*!WYZVTx$}>w$=SP_y6uSQ519-avw_-csEut0x5&lkbP9zV$%vuuN5f!&6J6HYb_ zlHgS~OARXJnyh;DQFb4yJTJ_+(`~D@rKvd`}7L1OJ ztU&Eo!4MTxqgAdorpK5~;C3zO>gvjcXd=Mf z0nCk-{+Jyt)S)AOn)o3DfIw87f}Vll{J7PD8V^;%&dv^`98Vf|ver2N&_(R8w)=y4 zShcuiU|n2*l=Tv8GlSQ0<99UChb8*ec9i1c;vZcLijR5Rcf!czmzdOsBY)y4p?1sn zBajn;m&Xg2MO@3dqwBrN!o{>9pUpFm`T2Rte3kt1T^Ih+>HTGwxn^!fnnW2Y+!KmM zg>>#^$37BT#SG-MI@Dk>mJ}YsZDvur2wd==+%apS++@Ah@x_J62}Lf2I}>)QqB@}cEuzWXs}(Z_kX^ljmkLRN*6hObEE=}9&kEqc zrqlWw%gLW3nUL9;nTaFiA`bhNmb;6c#3Y}ufT&yTnJ{$4>i~pd1n7v%A^P#(In2}K ze}b@a+*X>3&2gg#gNVEKh420Q_hde&ok3Va($Ej@hGR$|sHmvhBbjp0cVEMT;U$D? zT=ph}eD9Z>2ARQa!&*%yGxOCZhyU$5 z5=)9T+gldlptRGm4_M$G?_6PyWbB!^yeBahsrTs3Ef^G!RrIp8c zfBew*g$p}CRogSG@rpI@o+#01I&uR7dsx1)eb43;Pi2qk$ARPZJpT+@$y)N_Kc`Di zPrun0doov@-)XVXcC(h-vRP7+_TerV5LXEtx~v@~MWJ4{9+)ev}C>vX@b_ES24K01VesP-f0g zDkmiicP-s>KIic|zJ$C6{$}17=EY?vpEgKe(%3$BDG5K}DSv9oEE;WX`rNx;hd4c%Ihr%iW5PFVsK@iGCvW#cy%x>Q`hz;D=W@u3zGP_i%EvOEQYGuyGJGmG znYZ`jSnY?O*uSqlT_D?byVudjV>NHw!)cgaS)VXn%v_{7m56(mh&TF`QYOIy8O`e@ym{6BAh195b~!ep^?6II=ge{v;!$IitkDqPG^ z$~82271*FoW6&3KHydgdmXv(II_!ejk+gw}bCH`vJzV%?+AgqW8-~`aPnx}PHm6UT z-fyp2&cfg~3WxLSZsHqF`S&jd!I5Ivgmw;m1yF2NcVG2UawsD>H+Qx z+g|bPijYR$-(U0J4Vv@|{#b}p;hLJcz*OzskPNn??%C%rR@_`~qDW-i_E@mJoyF59 zrVLXGgH^7x4wq<+w8QEO$5ww(_R9s?)*vy*qyg~Tvw#6-`Tno5GGpX9re zfhLP6l^Wq~Z2r%WA3`yoK!4~$giE#L=DU1W2W))y!A}Y7+nfyTmsZ4sty0e_7Hpnw zry&_&74SKP516XuT&2}R&4ZT-4+q+w{nRp9$d9zzb0BR)wos1mQR0n%wCV&&9npm& zlwjyqpJ z;Z{K2lVt^BfvuB_K}%QSs>M5uyKcb-TF1y z5%FCf@zV5lu<*o@lm~X8l{cdg6FwssS6#t_)}xmiUQ$9DtZ{dxe+gqLEHep8gzfsx zs{iQdXzZVSuX&s6`>TV>L=ugt0b!u0?>zm6(z5JE$f)7hSO&X@iyqQQ@v^I0HtWjA z8ZHIO=q)&70*&CihbPn6PK$HySBVK}3hpN1xRdst7U#<(mGw7zCaM$xPg1DgWT}@Y z>H{QN2W_Fwd`wvZ%er+0cxn_IK#|ZHoQ~Q7+Pk7_qh>51?zb!}5njXfEJPExd*_0g z`{8#s^cG6!#YaU~PY7KUbUU0Y*LzyB$LIH$jgoqdVNm=~Twae0q?mA{Mc5TYr!)H) zEA~A_HrwC+m`%?NF8Xy;UZtOao+nRSNo9>Cjy|#}T6jj9^ar%Ib@bu1|TH03WrF79o$yla~N-~C+V5St;cRf)_2+T{!ILze1ykxJQTA4Sh0MJH9 z4C=i^Y?MrG{YvERiU2_S)NNL@tR-NZ?O_Xb*o8t(9h&IPqg9JR++o))1I9hTNA$w< zb=iJi=Av8-DQ`dN#i^RiBcth#QzH}p;Fi<$)IajGa!f{oNbv&#z)~1(bpb9md9q}3 z&xN049{+LwYtBN66$Sv)?s-xaYji@_mV;kc$NvGuwPLx*OV^U%-o{YNC8HCtf4)6k z2hGNzB`6Y1QgRpLI=U`23-o?WxLuTeS|mAcC@VV2k|XGDDqAz=zyN?u#T^&^rzg12d07voRM{PLcXiua` zGzlq$J5tZ+v)6HC#3Z-W1-!zT1*Z$d2}Lr0+^TNERwA-iV|Q(Z7Y87 z+`fnXKAc>?Q>Q;flqNcEjaL8NjhK$I4rzveXy7p+|DHEmL0Z5*>Ndmy3u zTPT!LF#d?y45BR}X=AjOqn58m1U z`5YVfG;%c8@_CD~+tOY`#f-Nj`wqMEnBf7-m&vu>Q#|%Yx(arxiS-cuI(*syuf63J zMu9AU{xmaTUN9)4m0Fj4GNF3IQ^)tT=*;@)b``~tG@xgNPWJ7{DDe>?kuqkFPs01J zwMJ{X8WUMmWcfvDDTauFy|btB4)xrv;D@m~Y%2Ka%GDxm^vYDA%qsOMM zkv&+k5GaIab1}9Tian4@)TJ^B+PJH%*R)wOxYBCtHg0*W;NgTVTKSF@z>G_?v;^_& ziY6f=US`_5+?!nWdpJ5c6)7+SGo?DCc0Y!slD%Hm7nKUg&lRtqi1>Y5I^VXusDZUH z0u11E9^46-?+i=Pi%2ufovohbn$UOq`G4VE}$2-5Djo~Wt-|YS@x2zyGq@U zCh0Yj-}QA4S=}zI4V`O4+n45)tJBJ2s zMDL6MjNe?prWW-z@R0(VZkwMB5yEZ6l#iZUo7>sUw-*OBlao^58qD-Tr)_Gw#orn; zx+QSdA#NWWn^zQ2p&DJ3Q#8sr;%)UEde(@_W1vzr97xejv@YV+!xm`Cj63G^$U(arHmj#mEOrg|UstONj zX{z?_RyK+$NOp*FDW?{j7J2?D{h))W6y)$eW_+pFW(uZNq@txZC_Z%H&$Oy*Drq7V zacXhdDF4tpOCO<1hv#yzz#jOuO?`%GHvBbz=%D_I;@_G|Z5+o&4b8&-Ekt8{S1zg8 zbHik5s?S?(v0zkCqg`ry=*SfeMI9IzbmjN8vKmM#@kI<;FH_yCT7+40Jy7UB51At# zJF>x+5mkBGJch$+IbutrtJ=WHj?#4TaO#MErx`MbT2!iH(8}TeprG`kr0Zr-E_)d) z!`kjYdfwhK6VNX%2AiPEA^&GxgdtcRH3?NiBXq>#-nZdkRLU-=wf_%}^c|0Hq3~%` zhr_R#V|M-}v53x(Y@YIn=_XAEc9DIX4&LaP(CJN>wY4y=2rVK?6Y_!GXJ4{qS&@DSdz4AWNh{gGc9ph{5A>v?=GK0YbP3s8-ahLX8`x z_U+4$g`F030*(}txZPV$5@PR+I@}xe@oRc*s#BS0S{1Q67A0+>!bFQsgO80AOX=<$ zp5hCWVdBKnU=h&D>IG>D!kv0j^7O5zM%aE!lF&)aR=7akFtjvZ3^^afei;r`kBA}Z zu*v@;EgL8Rvon}89rNfhyEAz&C_tBFIIF6r7FlL*Ir8+b_#Ri$y1W~%fmLbStO|WX zFDd~-R0)D_}kQ;wn6MI`KgsyQbIlE za_CCDN0vR+ebf~yl>O({oQU+93u`ZM_i@c2^KXa-z?RJ)-{%;_lx@Ss&)5E<5YYEG zrq?HBXjxj^FC8a|M=;@i^!q)rRFJ{HSOI$Qv+eM(ucS1}L0Eb#*q98Pbq4flD$aAt$D##frmTJLTew{=>mo{H>BymDU}R(z@y}Zc z)hnM7ZEYrnxYjq+wrHBu@m0ch>^LRhe(p#46{RjQD)+`1+@Z@$7q6sCgk0s+tm#5z zpTy4seX1QCBzeUA^#)iSGG|NQ=4k%ZN@DzSW<676NdbZD|Ky;yVEZd`>7c%hi$uY; zyrpMnagA%!{el-|00=9hsQ3k`8@0>|%^2-Kf;+IvS9T7mcLU3h_hDKSwG4BY{6kqg zX?m16OM@vLWMs6ow1^5E=d8>gSH}%*fdcEqD;NB; zg zXvZ0kM6V_pgX#G4T@LJOa(R#?I*2XKT6I7V$fnGDQ;bK#51X3geG7KwxI9FF)Ho>j zQdToi2!evGV7sm8Tj)i|{^jLmX*+1TVC!tCiumP5^!+R`MS?UHA0Hn$kwk2DJ(iT6 zzkl^>LN#-h|Ni|8ZyPzxW=Fq&5rHLdgi4MQ?iU+o_&Kbu^Jk#fVjS&Bk@jG+z7bJ2 zEU#*AGwlsFKt*#eOyLzT`>{r}oV3y8X1!2qOo(h+j}GLjqa{Ca5`v|E_XDkP@vi^v z)I~ez#19sGmomsj7_C?c9#dH1h^GI)WHoMUULAow#)n*G4+N-gxnw>L5Zh<1{@}If z!0P~d%9ZfL9#vqAH(yXcRW#qicmzD(6cTYZQ|Yenk`?2O3d_|)x}q&I2^!K#$?aQ zc_U=XPD&JJE-FY3a($w7;p7J{g9O)axp1G%{lD(K@`x~%b|KOiRbjj2)K0h#vmZ3h zr0tOPQ@oFdb=T4D01`3GEotPmi~e5bE3(cq;h%xMFhZ5gI5-p?9?kCcfYG4t znge|UQ&Z|?cJNH#LCh&y#ER=BuC&i+SA)CFp*9MD_j*R@S(Rf?s@v}s@Z&ntx9#(JbiSg-s@eQ||30?|Qw^ItkS2p%`AfON6a zY1)s%tqGEi^U$r##h{mV+m_b|H2!p3M%lb+wl-pR@On~;K5LbD1y_9&8pc`)%_>GD z+)z8fMtdQ~rgrCR<2NZ2OZVEQeh*yF&QZ4UDS{`r&e@eB*#o&nju&M5?KKjUgcf4;=Q5z=a(m zY#-}#1k4Qo+IxH9%0s$p=j$1J9MJswF0Fe9ZtOt+zZ079nV=|ar6#Dip_UsNbimw; z`&DcD(AGMXm|A@O%zpr0-@=qMtd%jcfuJJ2S%T=_qpy>(bsU%U4^7a*a4v@{43(jY9520=o)8>BlF7Ac@2DIn6_Eg;g3 zv`BZSbW2N}fxl<(cklN+`@H8IF0P9|xaL}Oj+o;f_x=5TM)r{~PA663z`hAWp+__J zWS4LUVf$yW^SL1f8+PoS^O>L2Pn2+9S8LtVr;unYLUZx#{ut{ol+syP(7W=~%2r-t zWE9pFvrjuZqH*i;q(88{)&5=l_myu$v^Rkt>pbb+N_`(nsDbx> zB@K8p`X@MK7CYn)!Jm%OTk$=$Ubvs(3tZ8b-UiqRT2<-#jsW4zT;juDu)woq4f`E& zDHG*fN_r1u|yN2L4H-5?_8khcCWUr~ei*K0qk97Mk>VMm4D#3{)>NhMtRrtOJ(UJPx@ zsOgI#(S>(~cSoTNbL>-th##iT_i!*9lj4MaFYD(O`wPN)nu9T`?v0K@2799%%TW?- zCo1QipFfBsIh=jKdt8f^;5gqPH1&#{_$sddD*56nrlpMZ-ixS#?7g=9Q?t%tyWwn! z&r=V+QW_q1bozwsUNk)j_)tY#M5FgU!`7|x5yOkBrgg#Y;ZJx2uE|n0_t=$MA8PUfQop2hY}e$r#r7SSs3e z8_zw?ElNWS$RFDbpZ7Z(Kkm{$kvBVyKQuR&)z8*#G&pY>#c&W3_-2QujTVNke1U|$ z(!UiJ$7mSaD2cg9N&v&uyY8t>awkoUK~~_xLq3YRo5wT2Rjv0!>Pfw(o8a8>aG*Ai zi&4|*wRjPc9`@(YNXMkncPn(1+)7=aJpuRJy%HhvlNVjdIA5#BPm3iH(HT@v=$;!& zYevIY9xz@s=lE4?&FFAt);<}&Gp3*{I!fi>e?!SzeTw3~MT$YyN*3!*ip8~y zi6A63y67^`-Jda8>bw}5~4rf+! zM(M>1MaA6dWAqQbsN~sXF-5}6srBnuWWo*&Q7K%_Cd^)@z$7Ao}y`OcczR!Y`G*)k_^F}kiU^bUs zWsnLe-2Qu*=swYLc48IzvkqT2J<*yiCH>X2poTVb-&FqJedLJ2-4_2|Ka*MuX%q}D z*ylRu#gG*)t)pW~zP@dKt!ek3hBs#9)ckKQaHK|I7-hPzJrNQ&?+~gVdf}>WL~;tif%E^nbBgA{a*N-pXWtTtAJ>ED95hw@sPt}tH8ae)uQvYwDQ&z zlp6^aLMG-kq~@lI2NrUbr!hM@cc(0Tm1HatE!HW9dl0d|Ry2E0h zKZ(*|{nWD~{OBID>w|;n>YK@l#h(OrsoKRZ{ee zG~km%D{?;{*h(dfxiWx7V^xMJm0JiG+$%n092dR!x8H#Y-NVDfbZ-|y=O?~+I*itE zx%~Zx^2xL8cccDM*gFZ~n~3ysVD5wZPeQCe20|W3>tdCH$7E5?``b0kZQ1iap1w6DT8HN&x0D>t8^2b8HkCL?%d+?!prJ z!=v8Kr{`jrM6Vci%8MNMSnR@8(z&QU%*FF??kPHu;;O2umQ;aQyvy{PX6KRDX^y3m zXc1B8-FoD=c49>xrAT`{39b&o_N2IFx5D{+!`khv{8L?JtdOvdJJ6j3A^J z+BK`vkx1mu@@chY$q^Lu zFZkSj@5K`Nu}1?kgfeJcDOqUe7FGC7?{%*-+hIh1ipRB2Cz)c1N!epQ9bCDfsUoFm zmy_nff^YNJd-1s`9-H~ObAKATz3pc+EUsN2p{!uzMBos>KtHy}CB1ijWSwREK#x#~ zqSXn@dS`z_LR4T|J@2XiGNDqKr=Rrgrj*pNqlNnD#b9z`x~B`J#WWjK8j+O$$Voi=UD_TrLn%hdyy0 z`MVv*xcF#J!Cth_mBg}L9`)O>tSeCQQ&*b)JeA@`@NI_h+6uSrKCSm`?RfU3M+~_= zdzzQBu(#eyY56Y7`6pb8BhN9r$8gVuJf^NUHx=RDOm}=ow%O{JM0|wvs|0u$;I^!_ zmB;Un-s;atjjvEL77lJPE83oW*J%tjc&5=O8LnBEaWOPC9u-L%7@UuXVkBWNryB4T ztsR$wCVyP{tp$gK(v;wG$EmAwUHK z@)Gu=X_JP0Gyavo#fLVXIY^C4-Kc2ro*3@Y*;cOb;y!JbI8BDdbIQoz zuLZY|od=9=WnB^>V8I*c`)AKgV0sC>4U->^6g>H1GxBX%6~JI(9N4S-N^C$^>Gabanbb0-j1 zA-3HPdwD&<^yfcHNFUy)r@7IyzEZX8FGMuQy3Y}OTb`uFe=2|R0;WVDDFH&`hvI%H z?c)ZXp}po!e>MxDkIzkQl6`xNY^ zRHwSON}7Z{Pqu$VG7RtNF%HT7N@luv-0<2bl)|@Tk#l_(k}%Hs*b9Ba@7!QFsd6KY zlArn+$Ti3dxg2LrhuAjZhaSiM9W>F$;V`H`Sf0!LnJlMpD`|V=~*CBR10Mo{GcZQ@|Gb$zqn+z_uk!&JE zJAhb9H4GJP?eqQC`)F$}H8nLr&Yd}JbqmZviE+dVcAa$@4;Q&6E+0SM7`A8& z#NBH+rJVJ~2k4%Mz98IM0^&8G`%9z__iMV?t$S7DHC1kffq~(C@Aez~d~v*4+Z~#& zVlwi8)|&UM#GuT)_v&PIf19(UZGc#^f7rIL0dC~bE-wz7_{hnFmqY{%a&cdsmY90sk1KC>434kTUFHQV^KDcdYUQy_0;jwgY~LBn%l9&u)T`+0 z%U3;&6LkNbz+>ZmeZB_#;)8bg-s0%gf3+X0Z54sxU_4D8&ZyDTSY{1Iiv1ZJ;RqWU zpYCVca?v=nqYCrbn{#D2N>!*@e2JkffaBLIkw{(gy_(;&1M98h)Bjg^pTH>?jo`Z_ zpXveu;Rk1~_*G3pXWuEe zUwE7|-tu@b7q)yFi;D}hro;Dr^C*b!Kpx& zl}2j^DP*ALZ8({-0jg3-1J9ibFrMK9otn7l5BtVi3}NUfy%uG4{}Vk&nC=l%Fw)nH zZTKt4eD;5R=BFJ#ySp0_bU5A4JkVJz;jo}gm0OyDPu^Y1YDI!g79*GLPy2~&^y2t;kyuR~A>d!23MrshoJq@Jy3 zh7+;rX=!RofsYfnG%n;MC@k_Y{JiPRUt5Ib8aTB>Bk_Jo=yc`~C~61nB$>}v6CJ?h z5Uwqv##wJOMR3=t*pxUyNR=D?4frX-XS@NuFielaI&H49(aE#2=b7pM^cJ-^C!_Gm zgb5H0o9pS3gWh__Y0@E`Jv1|;SBv!!$1?3N0B744G5c=-I0>n*OyB~rHjJeWP~E4t zMvMA%FIczI_9@VeWrhpO0v)Y?PxV8+s{e1)o7>*$y3_t?YPr1PQ?+!pFv;i}L0{{l zcJtTz9#U6ZZ#%u!Vh`wAJ*1xW#WtMmF6!sJP#xK@H4k|v>QvWu0&4vKjKr;|kNK*( z#X1$iKUaqAq{-spb~^UR8HGxPUAF1Bqj>jO>y6jsCT^rs*P^tYqSvN zbI

JK&Ch4cXzVK(c*euezoMt7f7?^txh7aoME47ZJmb^D0)bZiD+j6<<#rg>qRt zSi8R9ubaTBaldQpcN&Fn4%#2k+G1IGc>DqOIU-gaiM|19Jx%FHcr~=oy!lwo36@P~ zwH>yyGP0vgRGx?RSKsiqj)4`>ZFdI9w3r1161nwsByC1dP7;u)tqt$|k;K>nitj}r zQ|#~RiUS?(;lV#!3EHA%2hpFvQ~34kSK!|n6&&ViP8s6TjK>w=Cx z7oT@=x|chRgY-~(1~?58;db5K-JpiVC?2rh=W41)`xAU#u3S8q%^1sVfo>`dE~yMG z3y)|F?(laK0EW)#4~Eowux2}l;4q?Mk#ajOh`#bgUF3h+9!z-m!xHc!qEW~GeEsTG z@zWaRzjdf>;Gx)G`0kuYWezN?c(^6l$*k?t;9b@&MfHY&jO^A2*4frpeq#mrO&J=6 z4_I}wRPsqn_TB2Yw{3wFaL^Ly4Mwej8wPmKABJ~E{xHQ0YO8b8OINzRlSl@|FkeY+ zKzOyrFUGbLI{=NE%I9QUVi3_Z`pK1kv!v-7%xx5Lh(yHuaQ}fk{QWNm=14inHZho-T4isLVK%X>q z`02jz88t8O>B9H-&Yt+2XOea;(P_EaZsYo{cJqzN_Ve#M!BS0(iK<;A9Vq?#_iwoU zj2n>RpNLq4FZB|hUvwl!KVp)GtPv8}L%W+o(vG*Nt0 z<65InKFX4~W^d!u%kjBv63iM5KLc|A=g<8$3L7rR!i3O5Wcz?_7R87oK_QwEW{OZC z#K?q>_GX0&Ur+5nL|#7ud?G*KCy0rPV$rSaX$pU{ksS+|EjNe#BH?7b#aD_U#K3x= zPSS|l{^v=}^A!gom$%dQO_#+*8d!O-xY1k~$5Zx0e9yb8ozE@wxPsvz9tF*=%M?Ad z!z0wz(Q&(AgJB4;KKC0m;a80&7b(aAzwct@5S`SV`ag%}j6fCgsDD@3xGN1P+yQX{aDGV~BtguIB+B{tt?&J2+e*G!1*ldh`MV`YT+j3= z`Ap-Q(e9tr)SK}hptc#_!CI_c1u@Avm`{_o2;Y<@*S$Fqbb)&H;EtssppIjGMe)RNsEq-|LFX_{e=L%4~J$q}t6`w$>Q&u;INv-~{?_+2!-7|Qpg^G?X z!R%5+!p~9j5I@d00-dJ0ouOR{^{)eYwQ)x1xm)(#1X<@eqV0=k&V#4zEx1TZo!$}G zj|ScSQO>DqkUnjgFxj}4syTl>VOa^p6ngJ%l*m?5SJwpQ zgmmAV?_}(s>6ed19ToH*UoQkKmlPq0KWfTSZ!=O|4ja1$m%m=?tEi|DbG(d@q9g$^ zQ&*5G!wMz8^QyJQ#-)whpUG}mFWm6# zX8^`ETDkU!j*jlpqo|nVlF_j~55(d>b^?^yKHL_vfWB&*vtgj7f>0JZMO$D}P$PuI zkVK@#oi{3GA!vB+nJRU&u>dw!s*adoXL9|3chkGK6lCE_sUv(_KPUw<0&^v>dukbR zisjxoOC98*$=>fLo8r|LuSyzUV6q0nw*QX0xtB79Qcg@zh`27i?mHO{?1HKYh8D6*)EvGFu%p!~~Htz?y9H}YcH zB7?KOZ>{GaLe@mYszUr6B~vx)Z|N!TBaoPJfu4uA;l*1#u}AOFrIp3>VaLr}02Oo` zMpZWX*>{f-PIvk#XBq{V`0?@LDST_j) z668UaKmIF1rb4CJ3V$=tCFagBqdfWMl`R67&e+k^$v#sqyhuq-Cvi7H@AI}c4E#t* z!1TNBIr%eevwp%q@kRUQXU@E<5&<(SPxcjVX#^NX?{=;abxQfMz zh`ahEkM{`77{Alix5NLs(6;n!FSoxf0$uz51c7qRL00Bx*0GjtDdiy0x4UXtv zFA7^N#eK@@)62uu6=s;T5@VK1ybl#ybT>aj3DP?2CJBP>&Y#a^4BqLgJZ~aI@>N<_1<)EELKY&H zun!^uGrMW&U*PExA!4QGH-+|f`gpz3T^UHYxD8Z6EV6jLX4OfAV2eI|YP8??I~q0e zsRrrRU!lT&ZuTrj4cUOOx8AX?{9C1w z7KrVqqE+*L`_1W3JjmE&J{fxCMw(8m4enc-D+d*I?UD#nBZh_E{rtv2i{Xp-`7&E& z!*$x5Q3>X&=JCNvVzmdxS@nvT)gtUa2{B0u7D_w~T(`{yZm86JehbRt6yzYjrjWH= zY&B}@_zhW}G`-{|oqp++x2*4rOZ8xWb@V~wvi=$Rg2+!z$;tv0pY&@$xuN9it^G}$ z`R92y*QYA^S&N$5ex~WeUDo<-x zh`PD_f6*)IH| z2E=iOuRh!Zt!8p-P!kUD+{u^_u5>>&owQuaNf7nr^b` zf!yjCZ<{|7g|R-%ed{#6OW0LZd~+dttWvra?9Li0f|eBrPh_`a;iB4O?KZ7BaYQlv zwg1!@8~UJE|4sL*2Y>7Zmkt{zOPq&6YdRQU5R_&+g#-;M+ornm9&c-BU*~kgI0C{V zg$2Y(O-^kmmCnb+gf?v*ybOh2DxJc>aM+o85N;o}QRnB?VwCqj+PK<-SPj1srMnMNWa_t` z_vl%_pT)2kejM>H+ROV}+Do9nh()JvA&-wC*Yq$ZGsMIyjMIL!ZSVuYPFjso6H;V$ zFHctwZ|pBwpY%oIt81n0I<<`nHcet0Nzepnyk&nFHA>ID(sC1uCR{~8vT@bEfrIRr zZ|kF}?ObufO2(wv@}AN9dS^%@Dc9*?wkwC;P%uLM*CPLAuSK}7yaE(Rxf0HRr;ec+ zz=}(cxuagO6?Zq9BHgmSFKS;KqR#NQ&}XD3|KdP$cJXylef01(Pk-RWa-|*e9U+ReH{ho0)MB1oO8)o z{OoKf$9!MX)_)$$=KkOHK`x+_5^D7{HZBx-u$0=`U=y%gRIxb>57?X3wk3jqRF=Bs z&mT2)9>@z&LZwiUgnfgVuxJ$2-_1v0^@r8vGx)w{bZHqs_A-xS2J(b|urYvOc4Z*P zPBBdZeMD7LucAp*!HC5t$jRYlF+xwy&;7e_-t$bYw8HYP3cwT6MdfeWD05f&JhM1= z9I{%uvX)Hg%1kLvjbmxnl|wi4QG#qcSJ^gTCt(ANBdLW1y43YNu)sVuz?4|1c}lz6 zilGlntH&G_ZUYbbzo04Rpho_1R2%P`H9qM}l@?2gGN4Y~P9pcac1{Hk_nGm;vN`>1 z?gET)(qaP3kSv6)?w;>^T2vgGI)$^4EH@IUZfDBSqsauW3q9(5f$LO&hXm85*}iCh zjmb8S^7>(Lfzs>fHm1D4M3h|3&b%6v`UiiLHo^^GqI<{&cVaMcp{VG^5i7lw`vr5p z_>u$GFu`fv0m&H-!CWOqMkc@2v_Hj__ua?Py|l?;g-g#X-%BziZqrUMtkC zF<#8kQW)~NG@I8s4rV@aA5ZiktyO<>Ry{)rQPSTR^|Kp~XADO(a+#RE%FYxl2D2J(vKJcsoRaN0mzpv-0FVg zEHszxzI_X7=15Q`j3FdVO}yyccPJJgPUg&?r_RXsJ%0G>wCKxr>4WMh)K>8)-fpAj zIbAwx)6g?Q>%PoO6wn-4X&JB8dSb)Tr0kHUz=;UGNfU~fy=++BMW<|R-iMWE5*$^R zI?1{gXwAL9j$dEYpYv=8*&&5IaCxb&zI>m+kbrP!AL1aB&l;3MCvUJPUNAUKG9QI6 zuL;P*%ktZKRv~5u7H^y1C$x28Y=*ZCuMQl^!c5_X@SH>kO)69bY>+s69aQ-$~ z86?-OfR!_aBKyfXv)D0ma`*F}Ir|WcHSY+zm=0Ui5q z9B$%w*dVy~eJEW!-R24MH&3s!1I_n?IG389h6xb`qHX!I=!}3`1`rbL?EQT7iBIS+ zHiKeWw7J}W|4KXVw=gpUh!Fxp7hKhF1fiY~=ijW}Lo!^&6u}yRi^gYA;7jfsP`ls{ z2$m)3H*K)k_AR8XH zQ_N_v-zbBci0>;ufTQuudaB%TeZ1}>tN{({`FrlbLc%R)4=9;kqOD6c8V99b_lFHP zX|jR^pihehW-tP#HNjmvydYPZW{}ARKK63^*;<)M`a7K*4sINzp`n%TycZ|M(}$!) zOZU!*ShP6a{5ksaC4_9)@5|IUD*^PfTT68VH*}D)9qSBs5IPc14t-I^>LimiI1n=K zYNqhKuaP&RVzp012$Br2_4vsj7dF2@?_dKG+sbbnd&VZ6- zqfsRZxE5c92djZu|3ATNtA;_Y3Lna9OR?|;i24M;DDYZs( zED%$LPT?rZ5+N`)WNRS1xee_ATi4i2(?VHv9-x470-1T%TVnPz@rYZ3Gf2Z9E<2(s z3#93N3z7G#dVGS752?i`(l;n6Os)A^ACaK;dDOP}t6viQUF+iHlOs_GMf!oCrX$)n&) zV3(64`L?iKl6!W{pk^+WG)=qs$6_U;Z}m$lKP*mCzxM%lOfKUlztupG`+DQ&p~IVB z50X`5rfkEqvLu=WHL_I-N0=aF4>J#oq$LlPXdG)`X|AyuFXrLl+3`_p1MC!(kaoO4 z27FMCIgDcGl0?I zFGsIi>%8$VS`ZT7f5pS>l}^Vet498Ey7D|F=5!PNESO^NIUP2vWX*Kdo;A0{op+n% zwtdO1`)G|}6{P1he#2*j4%^Lcbkm4^k8KU5U3SIy}n$l%I52iy6oIrBhw){}iT= zBpJZ6q%pA5v8=h9sl@oPL$|z#(W%!utfHV}b!1wfi;X$>2g-1OM&`7MV~x!YTU{q| zbKi@BPI-qUZRFFtp39u3v#n@X&WAAcq?G7fU?HQt9Tak!bxMe zF1T>l-wF;YSQKkjB3LNp6kbPC>3e49d_UHDI7W*~?tc}M`!wGih$icpG6Na(gxna*ScwOVmJd~0t-u`77W2F|#i{c-gdY{jBwYm18-5|%{Km!X^U z&M3H$q%xRI)qNMI^#v*f$CsI^_kX3b@VQiGl>-J2fbkS;ZWfyUdi^w6^|Plr!kQoO zwV588o>^@n97txx(xs)Pt7T>X!M+@>m{m+o0q_e~;cK11DkIQSJQwpY>KMo66`HSc zjum>ST#wCPS${OJDJbT?O`9s};m@vIi^dUrw;uk<^W2vXPX8b$C`mltwrN^r zyFZD`UZuac!$TO%cMvoPEi`r@;+BYEf_cSU>N`3uL@vJ=u#Zb_n|VjiQzr_5=KA`^ z{*iuV4&u4Ir`tqrt6ZW0g9O|ew^_oF+-ORCGHH0_{uKuJ^7XHmg%yy5csje8Gi`qU z<2#*LsFCMoC5@imeXY&{gIu-CKW7jEkw2uPLcHcFbjVwIN2le8EY5d%pX^@EHr)>8 z^425HWC@xLP!iS9hyiC^IQfH6j4PgnnYj=c{j#?0aX|-h@kJTBf#8-XBsw8sYUnCX z`E|IBm`*%qlwuRwQlo%%+ zjY83!#+#*pykCpgf0jdyDxSTCGtor;=z56h9gruBu8P<`NAqY$ zQP<|D(?77(YxH#})e1}D11C#)e;B)OM;zURwD4N1w*z-pmW)^Ttl2kibQvFZ>O;xu z)!0^B)xuRzTW7^Z8F0tffk}-i8q~ABIUm0p#l9oW0~BlJ57aAAeSPQao5Ixf%U^r` z7(`~6G@~41^FjNYe(n(IQuLs3uKefYlt30TAg(LBfq&fRyhk-t0FDm&AzDoCB`C2W6D0o#kQ`MB9`!Y_Vr^Et={)EA#a@6IYOT=cP@sbYa|+YC0jlN z`ZzJsOpGoJo1N9WYc~?59RM4Y*j~iWC3Gs;Zl(JoV9@`o%|lDPo!g^VaW3Can%bM( zQc5%mqwPg>nyp{+Bx+CX<8q|>@b8SDdK6QUYBrX5e;2bWLt!g?B3cYa>5=&D0dux2h+-|y%@|w*AO6}20M+n0|xg0h1l^w0YG#}O2E-XEJVVw!%NTo%Uc!6yG_fA z6skr&te8218r)xYjIhmYs*Z)OZ9f)rOKphZqGc`4rE^s=`~aP4{bA=o#9{>R~nHCg^j*T}eeRMLzsG_@ryRz(Y4z z%X=7qJbN~?(fwkGejyuQZS)u(i-s_G=PF?7Q$zIKIshpv`?e38x6v4YR0m64y=X#2 zE}zAvZq|#<;w;T}FB(VhA@v4lfLN(MrP|oEZi@ZzQ109|$J1G8Gu!oIwgLUl++Qw?&uW|Lex#XWwKXQ9 z+AA=S$Rc_Ymd19y3v3^k#BXV|?4};x9>;hVkdJRqHPpo5`|bB{)m#N$vIA>yFbt!h zyNYh%9mnw^Ub>%T8IoQ0UumS*UzqhGrM<3}-LgZ}k=d7DI#sKqdPcXynprld+;YCm z^Rk5*Rcw4<1Uab7j?WKL^$td>=IyVCjkpO?_;6{17GKrSq<>;x09D(NN#jZ_Iig5| zT(kwd3htOe0?Ee&cWZ^JX(-TyohHa>AHV6`b&5{dp&^RwG~SQHq>RKsC1(r&v4f}< zLXDjUAp$^KB&K|$4Ag&4t7S*}&(mQ2Z*F{dT?SUJf0^+w4#1Hfx29|*dmv~U6o=m*y^*_zbUV>UA|@Yd)_B z%l4M4(zRz3{u_h4mW=bT9tjDFc={*%>5{ifjB@>(swj;zTqzb){iR7+|HelDl%xK@ zwptViEWUTZ;kiiP`}Hh|33(7>`gi^^P+PM<#(>x)odYBUx*G963%rS-al|b>AdD!0 zv;OmL2>*{=_uR9x5p%hYh1@Z$0 zFZKVf%sI9fVI{chE|>yXdp}HH*19ES+d}Rxi+$?T!bk4{ae*l6~;KO z#LiaC4Vnx>XLh}R%Nv}pP3J7B!@fpw>hh!A=hILrjA^4zlG+uiJ42}Hb;dFBcgH( zrzyi!YveL#L?)pjQ#%v$rE=MCy?%fF{`kFLug~*-eV*ref8NjM^?IJ?rn8fcqWocb z000ziFQ8o{>@5kh>~6_e->|`#(4HU*M+*RGAuDY8N=tGrzY8vo06_RR0HmY?z<0@1 ziez6b6aYT?0DxHu0H{TkbzqPHuxrEF!PQDE77q^(x3#t9=H{lRrUnKEvRJI5qN2#i z$cc%Gl$4al#zqc@GdVd4f?#!ZHIK)OkB?_C7;|%TSFc{}?ChjaC<1}t)vH%jDm6Sj z{KkzNgM)+Z?d>9wC@wCpuCDIRojW8FX?b}W1eZn{vZJsLC@HL(&5a^3JZVsFA-mS?Yyj3f!sOjj0-MgyBH}}=AF=t8Ec-|p#1A;9^ozds=Q_aQsFdfPwKLp?7^rhbuW*e{`oq8; z*E}U!=MR?qoj-r2}}9MmbB&tNg@+t>u4pjAiqcI^lo9S z82w{C@|u&Y)bPFdQUH*~*`h66gQx!~4N5p-1nFJ=)Y*98UG{N`souXrMxEtjv+O*L z$ss|{y)#(PPS}J5P_Y@W#I&AD4g9+qPS~sRo3A(UciZWk6dSyv)>-druzG92P zETV4362J=9GTtcf&vVQ<-Ce(|CfwkchAL`)%s7qDRCHVNa-bfuyPix0s#0dWFIh4U zsn%apCIJ0WvH`m30|3%OXT3x1#X0|5XZCrip7)ThM5bQ*#YM?kI|8NAleyX_1NHpA z^b)e5s$`#UE)(^*P7~-GwD_BXGQF#kC!4*QSg8^1s#GukPVKzu3lTZp*9ap%_F$fS z4b;eegN~_se)49OBmarxx_T=Hz;PR|4C7s;u zNiaQh%S>^6eSemt$`^9WGlr1hzpZFIl@;E3^GVmi!<0Q+CenHY3UQm=U7u)O|jfoA+9zW8$dar(0FH*H|dlp9Y3!XWEY zIReM+4Q{cZodK$K$jS@8HlUJrb}J$Iv**Ky&+w^Nc)ut9a+l!o+g77oDAQ(E@$tg2 zA#5cIPRxJ2pv;orA|tauiaDdN4SG+mkS!jL)qQ)a&f5G{ln~aol6;fdOFLKj@c?V^ za3arkaMhUv{mI%QxBbPJqOvWCPyw;bIDfY?Wr3Z z5Z1BJaJMk+#RH{V9{$8C`TSXG^SzMMh1+M%?h?<{aDJj({ym~oq&K8lHNWgOrVA`x zUk^$7{Zz=RY(=xflX%njXD)paAog<%4rW_vm-)#qLD6{=RAX$v*XYOlbHKyV#tnM^ zLG!XeC6b&mft(a=s#3H9BM0`VoMEIfx>7N{ROHJBC;S3Y8f#fRvCFgiET!g+A zFoc*n@m?xPtBdH3|M=pKsbrU zxT;G8?m}DB)73}yjg9>&oYt_chhfcaG=*K&pSj#F-~G>4YAKQ0f(%ax#NY!1q`g}< z=d%~)^~31LeBRWDfOE^VZ#f#-T`G_1CNphiQ;F0kjz2+RbzgVX=SebLccY%HPgR+6 z_<2kXYvyNa@6RXT)P#}1W_ie2&=CKTyO+{s3ca!_dPZ2?QaIz%^``O#HHlHwmm#3V|{AaN{V&{X@ag5IN(ss{o>nntft~*EZJr~fp>ERuglywqT zu)FrTIs|k(ntZ#u [!WARNING|style:flat] -> This question is temporarily unanswered if you have good ideas. Welcome to [Create Pull Request PR](https://github.com/kylesliu/awesome-golang-algorithm) - ## Description +There is a **binary** tree rooted at `0` consisting of `n` nodes. The nodes are labeled from `0` to `n - 1`. You are given a **0-indexed** integer array `parents` representing the tree, where `parents[i]` is the parent of node `i`. Since node `0` is the root, `parents[0] == -1`. + +Each node has a **score**. To find the score of a node, consider if the node and the edges connected to it were **removed**. The tree would become one or more **non-empty** subtrees. The **size** of a subtree is the number of the nodes in it. The **score** of the node is the **product of the sizes** of all those subtrees. + +Return the **number** of nodes that have the **highest score**. -**Example 1:** +**Example 1:** + +![1](./1.png) ``` -Input: a = "11", b = "1" -Output: "100" +Input: parents = [-1,2,0,2,0] +Output: 3 +Explanation: +- The score of node 0 is: 3 * 1 = 3 +- The score of node 1 is: 4 = 4 +- The score of node 2 is: 1 * 1 * 2 = 2 +- The score of node 3 is: 4 = 4 +- The score of node 4 is: 4 = 4 +The highest score is 4, and three nodes (node 1, node 3, and node 4) have the highest score. ``` -## 题意 -> ... +**Example 2:** -## 题解 +![2](./2.png) -### 思路1 -> ... -Count Nodes With the Highest Score -```go ``` - +Input: parents = [-1,2,0] +Output: 2 +Explanation: +- The score of node 0 is: 2 = 2 +- The score of node 1 is: 2 = 2 +- The score of node 2 is: 1 * 1 = 1 +The highest score is 2, and two nodes (node 0 and node 1) have the highest score. +``` ## 结语 diff --git a/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/Solution.go b/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/Solution.go index d115ccf5e..bbbd64618 100644 --- a/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/Solution.go +++ b/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/Solution.go @@ -1,5 +1,59 @@ package Solution -func Solution(x bool) bool { - return x +func Solution(parents []int) int { + adj := make(map[int][]int) + for c, f := range parents { + adj[f] = append(adj[f], c) + } + n := len(parents) + children := make([][2]int, n) + var dfs func(int) int + dfs = func(root int) int { + children[root] = [2]int{-1, -1} + index := 0 + count := 0 + for _, child := range adj[root] { + children[root][index] = dfs(child) + count += children[root][index] + index++ + } + return count + 1 + } + _ = dfs(0) + ans := 0 + // 尝试移除0 + left := children[0][0] + if left == -1 { + left = 1 + } + right := children[0][1] + if right == -1 { + right = 1 + } + ans = left * right + count := 1 + for i := 1; i < n; i++ { + x := n + x-- + left = children[i][0] + right = children[i][1] + if left != -1 { + x -= left + } else { + left = 1 + } + if right != -1 { + x -= right + } else { + right = 1 + } + now := left * right * x + if now == ans { + count++ + } else if now > ans { + ans = now + count = 1 + } + } + return count } diff --git a/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/Solution_test.go b/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/Solution_test.go index 14ff50eb4..75a4ce3ed 100644 --- a/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/Solution_test.go +++ b/leetcode/2001-2100/2049.Count-Nodes-With-the-Highest-Score/Solution_test.go @@ -10,12 +10,11 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + inputs []int + expect int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", []int{-1, 2, 0, 2, 0}, 3}, + {"TestCase2", []int{-1, 2, 0}, 2}, } // 开始测试 @@ -30,10 +29,10 @@ func TestSolution(t *testing.T) { } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }