рд▓реЗрдЦ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдПрдХ рдЖрд╡реЗрдЧ рдХреБрдВрдЬреА ( 2 , 3 , 4 ) рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╛рд░рд╛ рдкреЗрдбрд╝реЛрдВ ( 1 ) рдФрд░ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ
рдЧрддрд┐рд╢реАрд▓ рдкреЗрдбрд╝ (рд▓рд┐рдВрдХ / рдХрдЯреЗ рд╣реБрдП рдкреЗрдбрд╝) рд░реВрд╕реА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдореБрдЭреЗ рдЕрд▓реНрдЧреЛрд▓рд┐рд╕реНрдЯ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдорд┐рд▓рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдпрд╣ рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЬрдВрдХреНрд╢рди рдкрд░ рд╣реИ: рдкреНрд░рд╡рд╛рд╣ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реЗрдЦрд╛рдВрдХрдиред
рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧрддрд┐рд╢реАрд▓ рдкреЗрдбрд╝ рдЕрдзрд┐рдХрддрдо рдкреНрд░рд╡рд╛рд╣ рдЦреЛрдЬрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдХреБрд╢рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд▓рд╛рдЗрди рдХреЗ рдмреЗрд╣рддрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдкреНрд░реА-рд╕реНрдЯреНрд░реАрдо рдкреБрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рдФрд░

рдХреНрд░рдорд╢рдГред рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рддреЛ Cormen рдореЗрдВ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдХрд░реЗрдВред
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдЪрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реЗрдЦрд╛рдВрдХрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдПрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдЖрдзреБрдирд┐рдХ рдХреНрд╖реЗрддреНрд░ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЧреНрд░рд╛рдл рд╣реИред рдЗрд╕рдореЗрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ: рдкрд╕рд▓рд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдФрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдЙрдирдХрд╛ рд╡рдЬрди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрдврд╝рдиреЗ, рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ, рд╡реНрдпрд╛рд╕ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯреНрд░реА рдПрдХ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЪрд╛рд▓рд╛рдХреА рд╕реЗ рдЧреНрд░рд╛рдл, рдкреЗрдбрд╝реЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЧреЛрддрд╛ рд▓рдЧрд╛рдПрдБ, рдирд┐рдореНрди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдПрдХ рднрд╛рд░рд┐рдд рдЧреНрд░рд╛рдл рдХреЛ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдЧреБрдЬрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдиреНрдпреВрдирддрдо рдлреИрд▓реЗ рд╣реБрдП рдкреЗрдбрд╝ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ

рд╕реНрдореГрддрд┐ рдФрд░

рд╕рдордпред рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдЧрддрд┐рд╢реАрд▓ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рдФрд░ рд╕рд░рд▓ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рдЧрддрд┐рд╢реАрд▓ рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╢реЛрдзрди рд╣реЛрддреЗ рд╣реИрдВред рдЕрдм рд╣рдо рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдорд╛рдВрдЧ рдкрд░ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдпреБрдЧреНрдорд┐рдд рд╣реИ

рдХреЛрдиреЗред рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдбрд╝ рдХреЛ рдЬрдбрд╝ рд╕реЗ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
make_tree(v)
- рд╡рд░реНрдЯреЗрдХреНрд╕ v
рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреЗрдбрд╝ рдмрдирд╛рдПрдВlink(u, v)
- рдПрдХ рдкреЗрдбрд╝ рдХреЛ рдЬрдбрд╝ рдХреЗ рд╕рд╛рде рд╕рд╕реНрдкреЗрдВрдб u
рдкрд░ рд╡рд░реНрдЯреЗрдХреНрд╕ v
рд▓рд┐рдП рдирд┐рд▓рдВрдмрд┐рдд рдХрд░реЗрдВредcut(u, v)
- рдХрд┐рдирд╛рд░реЗ рдХрд╛рдЯ ( u
, v
)редfind_root(v)
- рдЙрд╕ рд╡реГрдХреНрд╖ рдХреА рдЬрдбрд╝ find_root(v)
рдЬрд╣рд╛рдБ рд╢реАрд░реНрд╖ v
рдирд┐рд╣рд┐рдд рд╣реИредdepth(v)
- рд╡рд░реНрдЯреЗрдХреНрд╕ v
рдХреА рдЧрд╣рд░рд╛рдИ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред
рдореИрдВ рдкрд╛рд╕ рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

рд╕рдордпред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐, рдпрджрд┐ рдХреЛрдИ
cut
рдФрд░
depth
рдХреНрд╡реЗрд░реА рдирд╣реАрдВ рдереА, рддреЛ рдЕрд╕рдВрддреБрд╖реНрдЯ рд╕реЗрдЯ (
5 ,
6 ,
7 ) рдХреА рдкреНрд░рдгрд╛рд▓реА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреА рд╣реИред
рдЧрддрд┐рд╢реАрд▓ рд╡реГрдХреНрд╖ рдЕрдкрдиреЗ рднреАрддрд░ рдЦреЛрдЬ рд╡реГрдХреНрд╖реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рд╡реЗ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ

ред рдЪрд░реНрдо рдХреЗ рдкреЗрдбрд╝реЛрдВ рдкрд░, рдЗрди рд╕рдорд╛рди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╢реЛрдзрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рддреА рд╣реИ

ред рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛

ред
рдЖрдВрддрд░рд┐рдХ рджреГрд╢реНрдп
рдПрдХ рдЪрд╛рд▓рд╛рдХ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдЪреНрдЪ рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдбрд╝ рдХреЛ рдкрдереЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдкрде рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛, рдФрд░ рдХреЛрдИ рднреА рджреЛ рдорд╛рд░реНрдЧ рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рдкрде рдХреЛ рд╡рдВрд╢ рдХреЛ рдкреВрд░реНрд╡рдЬ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рд╣рд┐рдд рдХреБрдВрдЬреА рдЦреЛрдЬ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрди рдкреЗрдбрд╝реЛрдВ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо
рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдпреЛрдЧреНрдп рд░рд╛рд╕реНрддреЛрдВ рдкрд░ рд╡рд┐рднрд╛рдЬрд┐рдд
рдХрд░рддреЗ рд╣реИрдВ , рдФрд░ рдЬрд┐рди рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рд╣рдо рдЗрди рдкрдереЛрдВ рдХреЛ рдвреЗрд░ рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ
рд╕рдорд░реНрдерди рд╣реИрдВ ред
рдЖрдЗрдП рд╣рдо рд╕рдВрджрд░реНрдн рдЯреНрд░реА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЛ рдмрд╛рдПрдВ рд╕рдмрдЯреНрд░реА-рдХреА-рд░рд╛рдЗрдЯ рд╕рдмрдЯреНрд░реА рдХреЗ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдСрд░реНрдбрд░ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрдХреНрд░рдо рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкрде рдХреЗ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬреЛ рднрд╛рдЧ рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВ рд╡реЗ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдкрде рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдкрд░ рд╣рдо рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рд╢реАрд░реНрд╖ рдкрде рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рддреЛ рд▓рд┐рдВрдХ рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдореЗрдВ, рд▓рд┐рдВрдХ
None
рдУрд░
None
ред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреБрдВрдЬреА рдЦреЛрдЬ рдкреЗрдбрд╝
рдпрд╣рд╛рдВ рдореИрдВ рдХреЗрд╡рд▓ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░реВрдВрдЧрд╛, рдФрд░ рд╡рд┐рд╡рд░рдг рдХреЗ
рд▓рд┐рдП рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдкреЛрд╕реНрдЯ рджреЗрдЦреВрдВрдЧрд╛ред
рдирд┐рд╣рд┐рдд рдХреБрдВрдЬреА рдЦреЛрдЬ рдкреЗрдбрд╝ рдЖрдо рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдХреЗрд╡рд▓ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдирдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЙрдирдореЗрдВ рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╡реЗрдВ рддрддреНрд╡ рдХреНрд░рдо рдореЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрд╢реАрд░реНрд╖рдХ рдХрд╛ рдЖрдХрд╛рд░ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдЪреБрдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдВ рдЬрд╛рдирд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
def find(v, k): if v == None: return None threshold = size(v.left) if k == threshold: return v if k < threshold and v.left != None: return find(v.left, k) if k > threshold and v.right != None: return find(v.right, k - threshold - 1) return None
рд╕рдВрддреБрд▓рди рдХрд░рддреЗ рд╕рдордп, рдЦреЛрдЬ рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХрд╛ рдХреНрд░рдо рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреЗрдбрд╝реЛрдВ рдХреЛ рд╕реНрдорд╛рд░реНрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ

рд╡реЗрдВ рддрддреНрд╡, рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ рдпрд╛ рдЗрдЪреНрдЫрд┐рдд рд╕реНрдерд╛рди рдкрд░ рдбрд╛рд▓реЗрдВред рд╕рднреА рдСрдкрд░реЗрд╢рди рд╕рдВрднрд╡ рд╣реИрдВ

ред
рдпрджрд┐ рд╣рдо рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдпрд╛ рд╕реНрдкреНрд▓реЗ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдкреЗрдбрд╝реЛрдВ рдХреЛ рдХрд╛рдЯрдиреЗ рдФрд░ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рддрддреНрд╡реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдорд░реНрдЬ рдФрд░ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВ

ред
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдирд┐рд╣рд┐рдд рдХреБрдВрдЬреА рдЦреЛрдЬ рдкреЗрдбрд╝ рд╣рдореЗрдВ рдПрдХ рдкрде рдХреЛ рджреЛ рдореЗрдВ рдХрдЯреМрддреА рдХрд░рдиреЗ, рджреЛ рдХреЛ рдПрдХ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдФрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ

рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рддрддреНрд╡

ред
рдмреЗрдирдХрд╛рдм рдФрд░ рдЙрд╕рдХреЗ рджреЛрд╕реНрдд
рдЧрддрд┐рд╢реАрд▓ рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рдкреНрд░рдореБрдЦ рдкреНрд░рдХреНрд░рд┐рдпрд╛
expose(v)
ред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡реГрдХреНрд╖ рдореЗрдВ рдкрдереЛрдВ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИред рд╣рдо рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВрдЧреЗ рдХрд┐, рд╢реАрд░реНрд╖
v
рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж, рдпрд╣ рд░реВрдЯ рдХреЗ рд╕рдорд╛рди рд╣реА рд▓реЗрдЯ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
v
рдкрде рдХрд╛ рдЕрдВрддрд┐рдо рд╢реАрд░реНрд╖ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдХрдореЛрдмреЗрд╢ рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрддрд╛ рд╣реИред
def link(u, v): u.link = v expose(u)
рд╣рдордиреЗ рдЕрднрд┐рднрд╛рд╡рдХ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдбрд╛рд▓ рджрд┐рдпрд╛ рдФрд░
expose
рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
expose
рдХрд┐рдпрд╛ред
def cut(u, v): expose(v) u.link = None expose(u)
expose
рдХрд░рдиреЗ рдХреА рдкрд╣рд▓реА рдХреЙрд▓ рд╣рдордиреЗ рд╡рд░реНрдЯрд┐рд╕
u
рдФрд░
v
рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рд╕реНрддреЛрдВ рдореЗрдВ рд░рдЦреАред рд▓рд┐рдВрдХ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛
expose
рдЪрд▓рд╛рдПрдВред
def find_root(v): expose(v) return leftest(supportRoot(v))
рдПрдХреНрд╕рдкреЛрдЬ рдХреЙрд▓
expose
рдмрд╛рдж
expose
рд╡рд░реНрдЯреЗрдХреНрд╕
v
рдФрд░ рд░реВрдЯ рдПрдХ рд╣реА рд░реЗрдлрд░реЗрдВрд╕ рдЯреНрд░реА рдореЗрдВ рд▓реЗрдЯ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдкреЗрдбрд╝ рд╕рдВрддреБрд▓рд┐рдд рд╣реИ, рддреЛ рдмрд╕ рдЬрдбрд╝ рддрдХ рдЪрдврд╝реЛ, рдФрд░ рдлрд┐рд░ рдиреАрдЪреЗ рдмрд╛рдИрдВ рдУрд░ рдЧрд╛рдБрда рдкрд░ рдЬрд╛рдУред рдпрд╣ рдЬрдбрд╝ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ
supportRoot
рдХреЛ рд░реВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛, рдФрд░ рд╕рдмрд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдХреЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рд╡рдВрд╢ред рдПрдХ рд╕реНрдкреНрд▓реЗ рдЯреНрд░реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
supportRoot
рдХреЛ
supportRoot
рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
def depth(v): expose(v) return size(supportRoot(v)) - 1
рдлрд┐рд░ рд╕реЗ,
expose
, рдлрд┐рд░ рд╕реЗ рд╡рд░реНрдЯреЗрдХреНрд╕
v
рдФрд░ рд░реВрдЯ рдПрдХ рд╣реА рдкрде рдкрд░ред рд╕рдВрджрд░реНрдн рдЯреНрд░реА рдХрд╛ рдЖрдХрд╛рд░ рдЗрд╕ рдкрде рдореЗрдВ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд╣рдо рдЬрдбрд╝ рддрдХ рдмрдврд╝рддреЗ рд╣реИрдВ, рд╣рдо рд╕рд╣рд╛рдпрдХ рдкреЗрдбрд╝ рдХрд╛ рдЖрдХрд╛рд░ рдкрд╛рддреЗ рд╣реИрдВред рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛ рдШрдЯрд╛рдПрдВред
рдЖрдЗрдП рд╕рдмрд╕реЗ рдирд┐рдХрдЯрддрдо рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬ рдвреВрдВрдвреЗрдВред
def lca(u, v): expose(u) expose(v) return leftest(supportRoot(u)).link
рдХрд╛рдЧрдЬ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдкрд░ рдбреНрд░рд╛ рдХрд░реЗрдВ рдЬреЛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд▓рдХреЗрдП рд╣реИред рд╡реИрд╕реЗ, рдХреНрдпрд╛ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рд╣реИрдВ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛрдИ рднреА рдирд╣реАрдВ рд▓реМрдЯреЗрдЧреА? рдХреНрдпрд╛ рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ?
expose
рдкреНрд░рдХреНрд░рд┐рдпрд╛
expose
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рд╣рдо рдЙрд╕ рд╕рдВрджрд░реНрдн рдЯреНрд░реА рдХреА рдЬрдбрд╝ рдкрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдирд┐рд╣рд┐рдд рд╣реИ; рдкрде рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рдмрд╕реЗ рдмрд╛рдПрдВ рддрддреНрд╡ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдпреЗ рдСрдкрд░реЗрд╢рди рд╕рдВрднрд╡ рд╣реИрдВ

ред рдЕрдЧрд▓реЗ рд╕рдВрджрд░реНрдн рдЯреНрд░реА рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рд╛рде рдорд░реНрдЬ рдХрд░реЗрдВред рд╣рдо рдРрд╕рд╛ рддрдм рддрдХ рдХрд░реЗрдВрдЧреЗ рдЬрдм рддрдХ рд╣рдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗред
рд╣рдо
cutout
рд╣реЗрд▓реНрдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ
v
рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рд╛рд╕реНрддрд╛ рдХрд╛рдЯрддреА рд╣реИ рдФрд░ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд▓рд┐рдВрдХ рдЪрд┐рдкрдХрд╛рддреА рд╣реИред
def expose(v): cutout(v) v = leftest(supportRoot(v)) while v.link != None: cutout(v.link) merge(supportRoot(v.link), (v - v.link), supportRoot(v)) v.link = None v = leftest(supportRoot(v)) return v
рдЧреИрд░-рдЬрдбрд╝ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝
рдЧрддрд┐рд╢реАрд▓ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдЧреИрд░-рд░реВрдЯ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЙрдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЖрдЗрдП рдирд┐рдореНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦреЗрдВ:
def revert(v): expose(v) reverse(supportRoot(v))
revert(v)
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд░реНрдЯреЗрдХреНрд╕
v
рдХреЛ рд╡рд░реНрддрдорд╛рди рд░реВрдЯ рд╕реЗ рдЬреЛрдбрд╝рддреА рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рд╡рд░реНрдЯреЗрдХреНрд╕
v
рд░реВрдЯ рдерд╛, рддреЛ рдХреЗрд╡рд▓
v
рдФрд░ рд░реВрдЯ рдХреЗ рдмреАрдЪ рдХреЗ рдкрде рдкрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рдХреНрд░рдо рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдкрде рдХреЛ рдПрдХ рдирд┐рд╣рд┐рдд рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЦрдВрдбреЛрдВ рдкрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рд╕рдВрдЪрд╛рд▓рди (
4 рдмрд╛рд░) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпреВ-рдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ рддреБрдЪреНрдЫ рд╣реИред
def link_edge(u, v): revert(u) link(u, v)
def cut_edge(u, v): revert(v) cut(u, v)
рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
revert
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐
u
рд╕рдмрдЯреНрд░реА рдХреА рдЬрдбрд╝ рд╣реЛрдЧреАред рджреВрд╕рд░реЗ, рд╡рд░реНрдЯреЗрдХреНрд╕
v
,
u
рдХрд╛ рдЬрдирдХ рд╣реЛрдЧрд╛ред
рдЖрдк рдПрдХ рд╣реА рдкреЗрдбрд╝ рдХреЗ рдХреЛрдиреЗ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рднреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
def dist(u, v): revert(v) return depth(u)
рдЦрдВрдбреЛрдВ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдорд╣рд╛рди рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрддрдо рдкреНрд░рд╡рд╛рд╣ рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЙрдиреНрд╣реЗрдВ рдЕрд╡рд╢рд┐рд╖реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдереНрд░реВрдкреБрдЯ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдкреВрд░реЗ рдкрде рдХреЗ рд╕рд╛рде рдзрд╛рд░рд╛ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЯреЗрд░рд┐рдпрди рдХреА рдкреБрд╕реНрддрдХ "рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдПрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо" рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдкрд░рд┐рдЪрдп рдореЗрдВ рдХрд╛рд░реНрдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдПрдХ рдЫреЛрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдПрдХ рд▓реВрдк рджрд┐рдЦрд╛рдИ рджреЗ рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВред рдЖрдкрдХреЛ рджрд┐рдП рдЧрдП рд╡рд░реНрдЯреАрдХрд▓
u
рдФрд░
v
рдмреАрдЪ рдХреЗ рдкрде рдкрд░ рд╕рдмрд╕реЗ рднрд╛рд░реА рдХрд┐рдирд╛рд░реЗ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
u
рд╕реЗ
revert
u
,
v
рд╕реЗ
expose
, рдФрд░ рд╣рдореЗрдВ рдЗрд╕ рдорд╛рд░реНрдЧ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рд╕рдВрджрд░реНрдн рдЯреНрд░реА рдорд┐рд▓рд╛ред рдирд┐рд╣рд┐рдд рдкреНрд░рдореБрдЦ рдкреЗрдбрд╝ рдЖрдкрдХреЛ рдЕрдзрд┐рдХрддрдо рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдмрдврд╝рдд рдкрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рддрдХрдиреАрдХреА рд╡рд┐рд╢реЗрд╖рддрд╛: рдпрджрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рдирд╛рд░реЗ рдХрд╛ рд╡рдЬрди рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдкрд░ рд╕рдВрджрд░реНрдн рдкреЗрдбрд╝ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрдм рд░реВрдЯ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╡рдЬрди рдХреЛ рдЕрдЧрд▓реЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рдХреЛрдиреЗ рддрдХ рдкрде рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЯреЗрдХреНрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рд╡рд╣рд╛рдВ рдХреЗрд╡рд▓ рд╡реЗрдЯ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдЪрд▓реЛ

ред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп рдореЗрдВ
expose
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдПрдХ рд╕реНрдерд┐рд░ рдХреА рдПрдХ рдпрд╛ рджреЛ рд╢реБрд░реБрдЖрдд рд╣реЛрддреА рд╣реИ
рд╕рдВрджрд░реНрдн рдкреЗрдбрд╝реЛрдВ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ред рд░реЗрдлрд░реЗрдВрд╕ рдЯреНрд░реА рдкрд░ рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ

ред
рдЖрдЗрдП
expose
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛
expose
ред рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рджреЗрдВ

рд╡рд┐рд▓рдп рдФрд░ рд╕рд╣рд╛рдпрдХ рдкреЗрдбрд╝реЛрдВ рдХреА рдХрдЯреМрддреАред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдЙрди рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╡реНрдпрдХреНрдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдирд┐рд░реНрдорд╛рдгрд╛рдзреАрди рдкрде рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдЕрдиреБрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрдирдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреЛ рдЙрдк-рдЖрдХрд╛рд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╡рдЬрди рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЬрдбрд╝ рд╡рд╣ рд╣реИред рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдмрдЪреНрдЪреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдзрд╛рд░ рдХреЛ рднрд╛рд░реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдмрдЪреНрдЪреЗ рдХрд╛ рд╡рдЬрди рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╡рдЬрди рд╕реЗ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рд╢реЗрд╖ рдкрд╕рд▓рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд╢ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрд╡реАрдХреГрддрд┐ред рдЬрдбрд╝ рд╕реЗ рдХрд┐рд╕реА рднреА рдкрддреНрддреА рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдкрд╕рд▓рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ 
ред
рд╣рд░ рдмрд╛рд░, рдПрдХ рд╣рд▓реНрдХреЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдмрдЪреНрдЪреЗ рдХреЗ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдкрд░, рд╡рд░реНрддрдорд╛рди рд╕рдмрдЯреНрд░реА рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рд╕реЗ рдХрдо рджреЛ рдмрд╛рд░ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдкреЗрдбрд╝ рдХрд╛ рдЖрдХрд╛рд░ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

, рддреЛ рдЬрдбрд╝ рд╕реЗ рдХрд┐рд╕реА рднреА рдкрддреНрддреЗ рддрдХ рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд╢ рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ

ред

рдкрд┐рдЫрд▓реЗ рдмрдпрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕рднреА
expose
рдХреЙрд▓ рдХреЗ рд▓рд┐рдП
expose
рд╣рдо рдкрде рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ

рдлреЗрдлрдбрд╝реЗ рдХреА рдкрд╕рд▓рд┐рдпрд╛рдБред рд╣рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдХрд┐ рднрд╛рд░реА рдкрд╕рд▓рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд░реА рдкрд╕рд▓реА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рд╣рдо рдЙрд╕ рдкрд░ рдПрдХ рд╕рд┐рдХреНрдХрд╛ рдбрд╛рд▓реЗрдВрдЧреЗред рдЬрдм рдкрд╕рд▓реА рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдкрдбрд╝реА рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рд╕рд┐рдХреНрдХреЗ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВред рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВ рдХрд┐ рд╣рдо рдХрд┐рддрдиреЗ рд╕рд┐рдХреНрдХреЗ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдХреЗрд╡рд▓ рджреЛ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕рд┐рдХреНрдХрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ: рдХ) рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ
expose
рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛, рдмреА) рдЕрдм рдПрдХ рдЖрд╕рдиреНрди рдмрдврд╝рдд рдкрде рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдкрд╣рд▓рд╛ рдорд╛рдорд▓рд╛ рдФрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛

рд╕рдордпред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрд╕рдиреНрди рдЪрдпрдирд┐рдд рдХрд┐рдирд╛рд░рд╛ рд╣рд▓реНрдХрд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдФрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛

рд╕рдордпред рдкреЗрдбрд╝ рдореЗрдВ рдХрд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд░рд╣ рд╕рдХрддрд╛ рд╣реИ

рднрд╛рд░реА рдкрд╕рд▓рд┐рдпрд╛рдБред рддреЛ, рдХреБрд▓ рднрд╛рд░реА рдкрд╕рд▓рд┐рдпреЛрдВ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ

ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рдкрд░рд┐рдЪрд╛рд▓рди рдХрд╛ рдХреБрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп

ред
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд░реАрдХреНрд╖рдг
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЫреЛрдЯреЗ рд╡реНрдпрд╛рд╕ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдзрд╛рд░рдг
DFS
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рд╣рдо рдмрдбрд╝реЗ рдкреЗрдбрд╝реЛрдВ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ
link
рдФрд░
cut
рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЧрддрд┐рд╢реАрд▓ рдкреЗрдбрд╝ рдХрд╛рдлрд╝реА рдкреНрд░рднрд╛рд╡реА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдЪреНрдЪрддрдо рдкреНрд░рджрд░реНрд╢рди рд╕реНрдкреНрд▓реЗ-рдкреЗрдбрд╝реЛрдВ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг
рдЯреЗрд░рд┐рдпрди рдХреА
рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
, рд╡рд░реНрдирд╛рдХ "рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯреНрд░реАрдЬрд╝ рдЗрди рдкреНрд░реИрдХреНрдЯрд┐рд╕" ред
рдЕрдЬрдЧрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдЬреАрд╡рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ ...
рдпрджрд┐ рдЖрдк рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдмрдзрд╛рдИ рджреЗрддрд╛ рд╣реВрдВред рдореИрдВ рдЕрдкрдиреЗ рдкрд╛рдардХреЛрдВ рдХреА рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рд╕рдВрджреЗрд╢ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдкрд╣рд▓реЗ рддреАрд╕рд░реЗ-рдЪреМрдереЗ рд╡рд░реНрд╖ рдХреЗ рд╕реНрдирд╛рддрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВред рд╢рд╛рдпрдж рдЙрдиреНрд╣реЛрдВрдиреЗ рдЖрдкрдХреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рдерд╛, рдФрд░ рдЖрдк рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдХрдИ рдЕрдиреНрдп рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдЕрдВрддрд░рд╛рд▓ рднрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдХрд╛рджрдорд┐рдХ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреА рдордЬрд┐рд╕реНрдЯреНрд░реЗрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдореМрдХрд╛ рд╣реИ, рдЕрдиреБрднрд╡реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рджреЗрдЦрд░реЗрдЦ рдореЗрдВ рдЕрдкрдирд╛ рд╣рд╛рде рдбрд╛рд▓реЗрдВ, рдФрд░ рдЧреИрд░-рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП - рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдореЗрдВ рдЬрд╛рдПрдВред рдпрд╣рд╛рдВ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рджреВрд╕рд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпреВрд▓рд░ рдФрд░ рдмреНрд░рд┐рдВрдЧрдореЗрд╕ рдХреЗ рдмреАрдЪ, рдмреНрд░рд┐рдВрдЧрдореЗрд╕ рдФрд░ рдЯреЙрдкрдХреЛрдбрд░ рдХреЗ рдмреАрдЪ рдШреВрдо рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЧрдгрд┐рдд рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдорд╣рд╛рди рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЬрдЧрд╣ рдФрд░ рдПрдХ рдХрд╛рд░реНрдп рдорд┐рд▓реЗрдЧрд╛ред рдЕрдиреБрдорд╛рдирд┐рдд (
8 ,
9 ), рдШрд╛рддрд╛рдВрдХ (
10 ), рдкреИрд░рд╛рдореАрдЯрд░рдпреБрдХреНрдд (
11 ) рдПрд▓реНрдЧреЛрд░рд┐рджрдо, рд╕рдВрдЪрд╛рд░ рдЬрдЯрд┐рд▓рддрд╛ (
12 ), рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЬрдЯрд┐рд▓рддрд╛ (
13 ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреБрд╕реНрддрдХреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдПрдВред
рдЕрдкрдиреЗ рдЕрд╡рд╕рд░ рдХреЛ рдпрд╛рдж рдордд рдХрд░реЛ!
рд╕рд╛рд╣рд┐рддреНрдп
- "рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯреНрд░реАрдЬрд╝ рдЗрди рдкреНрд░реИрдХреНрдЯрд┐рд╕" рдЯрд╛рд░рдЬрди, рд╡рд░реНрдиреЗрдХ
- "рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯреНрд░реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░" рд╕реНрд▓рд╛рдЯрд░, рдЯрд╛рд░рдЬрди
- "рдиреЗрдЯрд╡рд░реНрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ" рдЯрд╛рд░рдЬрди