рдЗрддреНрдореАрдирд╛рди рд╕реЗ, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдПрдХ рдкреЗрдбрд╝ рдореЗрдВ рджреЛ рдХреЛрдиреЗ рдХреЗ рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬ (рдПрд▓рд╕реАрдП) рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдПрд▓рд╕реАрдП рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдерд╛ред рдХрд╛рдо рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджрдмрд╛рдЬреА рдХреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЕрдм рдореИрдВ рдЗрд╕реЗ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдкрд░рд┐рдЪрдп
рдПрдХ рдкреЗрдбрд╝
N рдХреЛрдиреЗ рдФрд░
N-1 рдХрд┐рдирд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдЧреНрд░рд╛рдл рд╣реИред рдХрд┐рд╕реА рднреА рд╢реАрд░реНрд╖ рд╕реЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП, рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╕рд░рд▓ рдорд╛рд░реНрдЧ рд╣реИред
рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдХреЛ рдПрдХ рдРрд╕рд╛ рд╢реАрд░реНрд╖ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдВ рд╕реЗ рдкреЗрдбрд╝ рдХреА рдкрд░рд┐рдХреНрд░рдорд╛ рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрдм рд╡рд╣ рдЪрдХреНрдХрд░ рдХрд╛рдЯрддрд╛ рд╣реИред
рджреЛ рдХреЛрдиреЗ
рдпреВ рдФрд░
рд╡реА рдХреЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬ рдХреЛ рд╡рд░реНрдЯреЗрдХреНрд╕
рдкреА рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд░реВрдЯ рд╕реЗ рд╡рд░реНрдЯреЗрдХреНрд╕
рд╡реА , рдФрд░ рд╡рд░реНрдЯреЗрдХреНрд╕
рдпреВ рддрдХ рдХреЗ рдорд╛рд░реНрдЧ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗред
рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛
рдкреЗрдбрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдЖрддрд╛ рд╣реИ:
рдПрди - рдХреЛрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛,
рдПрди-1 рдЬреЛрдбрд╝реА рдХреЛрдиреЗ рдЬреЛ рдПрдХ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдФрд░
рдПрдо - рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдлрд┐рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ: рджреЛ рдХреЛрдиреЗ
рдпреВ рдФрд░
рд╡реА , рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЖрдЗрдбрд┐рдпрд╛
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреА рджреВрд░реА рдХреЛ рд░реВрдЯ рдФрд░ рдкрд┐рдЫрд▓реЗ рд╡рд░реНрдЯреЗрдХреНрд╕ (рдкреВрд░реНрд╡рдЬ) рд╕реЗ рд╕рдВрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рд╕реЗ рд╣рдо рдЗрд╕рдореЗрдВ рдЖрдП рдереЗред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╡рд░реНрдЯрд┐рд╕
рдпреВ рдФрд░
рд╡реА рд╕реЗ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рддрдХ рдЪрдврд╝реЗрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ, рд╣рдо рд╡рд░реНрдЯреЗрдХреНрд╕
рдпреВ рдпрд╛
рд╡реА рдЪреБрдиреЗрдВрдЧреЗ рдЬреЛ рд░реВрдЯ рд╕реЗ рд╕рдмрд╕реЗ рджреВрд░ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдкреВрд░реНрд╡рдЬ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрдм рддрдХ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ
рдпреВ рдФрд░
рд╡реА рд╕реЗ рдмрдиреЗ рдорд╛рд░реНрдЧ рдПрдХ рд╢реАрд░реНрд╖ рдкрд░ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ - рдЙрдирдХрд╛ рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬред рд╡рд┐рднрд┐рдиреНрди рд╡реГрдХреНрд╖ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде, рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрде рдореЗрдВ
N рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЛрдиреЗ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде, рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП O (N) рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЕрдм рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреВрд░реА рдХреЛ рджреВрд░ рдХреЗ рдкреЗрдбрд╝, рдЙрд╕рдХреЗ
рдмрдЪреНрдЪреЛрдВ рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рде рд╣реА рдкреВрд░реНрд╡рдЬ (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдиреАрдЪреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рд╕реЗ рд╕рдВрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рд╕реЗ рд╣рдо
рдЕрдВрддрд┐рдо рдЖрдП рдереЗ рдФрд░ рд╢реАрд░реНрд╖ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕ рдкрд░ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдкреВрд░реНрд╡рдЬ рддрдХ рдЬрд╛рддрд╛ рд╣реИ рдЗрд╕ рд╢рд┐рдЦрд░ рдХреА
рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ ред
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
const int SIZE = 100050; vector<int> v[SIZE];
рдЕрдм, рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд╝рдВрдХреНрд╢рди (рдХреЙрд▓
k_go (0) ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:
int k_go(int s) { int res = 0; vis[s] = true; for(int i = 0, maxi = v[s].size(); i < maxi; i++) { if(!vis[v[s][i]]) res += k_go(v[s][i]) + 1; } kids[s] = res; return res; }
рдФрд░ рдЕрдм рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рднрд╛рдЧ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рднрд░реЗрдВред рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ
l_go (0, 0, 0, 1) рдХрд╣рддреЗ рд╣реИрдВ :
void l_go(int s, int d, int l, int r) { vis[s] = true; dist[s] = d; last[s] = l; turn[s] = r; int maxval = 0; int idx = -1; for(int i = 0, maxi = v[s].size(); i < maxi; i++) { if(!vis[v[s][i]]) { int k = kids[v[s][i]]; if(k > maxval) idx = v[s][i], maxval = k; } } for(int i = 0, maxi = v[s].size(); i < maxi; i++) { if(!vis[v[s][i]]) { if(idx == v[s][i]) l_go(v[s][i], d + 1, l, r); else l_go(v[s][i], d + 1, s, v[s][i]); } } }
рдЕрдм рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреЛрдб рдХрд╛ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╢реАрд░реНрд╖ рдкрд░ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрд╕рдХреЗ рд╡рдВрд╢рдЬ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╣рдо рдЕрдзрд┐рдХрддрдо рд╡рдВрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реАрд░реНрд╖ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрд╡рдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╡рд░реНрддрдорд╛рди рдПрдХ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реЛрдЧреА, рдФрд░ рдХреЗрд╡рд▓ рд░реВрдЯ рдХреА рджреВрд░реА рдмрджрд▓ рдЬрд╛рдПрдЧреАред рдЗрд╕ рд╢реАрд░реНрд╖ рдХреЗ рдЕрдиреНрдп рд╕рднреА рд╡рдВрд╢рдЬ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдЕрдм
рдЕрдВрддрд┐рдо рдХрд╛ рдкреВрд░реНрд╡рдЬ рд╣реЛрдЧрд╛, рдФрд░ рд╡рдВрд╢рдЬ рдЦреБрдж рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред
рдЕрдм рдореИрдВ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рд╣рдо рдкреЗрдбрд╝ рдореЗрдВ рдХреБрдЫ рд╢реАрд░реНрд╖ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЬрдм рддрдХ рд╣рдо рдЗрд╕реЗ рдЬрдбрд╝ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддрдм рддрдХ
рдЕрдВрддрд┐рдо рдкреВрд░реНрд╡рдЬ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреЗрдбрд╝ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд▓рдШреБрдЧрдгрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдкреНрд░рдорд╛рдг: рд╣рдореЗрдВ рдХреБрдЫ рд╢реАрд░реНрд╖
v рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рдВрд╢рдЬ рд╣реИред рддрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓рд╛ рд╡рдВрд╢ рдкреВрд░реНрд╡рдЬ рдХреА
рдЕрдВрддрд┐рдо рдХрдбрд╝реА рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдЪрдХреНрдХрд░реЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рд╡рдВрд╢рдЬ (рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдХреЗ рд╕рднреА рд╡рдВрд╢рдЬреЛрдВ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рдВрд╢рдЬ рд╣реИрдВ) рдЬрд┐рдирдХреА рд▓рд┐рдВрдХ рд╡рд░реНрддрдорд╛рди рдФрд░ рд╕рднреА рдЕрдиреНрдп рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ, рдЬрд┐рдирд╕реЗ рдпрд╣ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
N рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░реЗрдВ
ред рдлрд┐рд░ рдЗрд╕ рд╢реАрд░реНрд╖ рдХреЗ рд╡рдВрд╢рдЬ рд╕реЗ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдкреВрд░реНрд╡рдЬ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ,
рдПрди / 2 рд╡рдВрд╢рдЬреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХрддрдо рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рддрдм рд▓рд┐рдВрдХ рдЕрдкрдбреЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдиреЗ рдкрд░, рдЬреЛ рдХрд┐
рдкрд┐рдЫрд▓реЗ рдХрд╛ рдкреВрд░реНрд╡рдЬ рд╣реИ
, рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреЛрдиреЗ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╡рдВрд╢рдЬ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрде рдХреА рдХреБрд▓ рд▓рдВрдмрд╛рдИ
рдПрди рдХреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд▓рдШреБрдЧрдгрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреА
редрдЕрдм рдЖрдЗрдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ рдФрд░ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдХреЛрдиреЗ рд╣реИрдВ
u рдФрд░
v , рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрддреНрддрд░ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ
p = lca (u, v) рдХрд╣рддреЗ рд╣реИрдВ :
int lca(int a, int b) { if(turn[a] == turn[b]) { if(dist[a] < dist[b]) return a; else return b; } if(dist[last[a]] > dist[last[b]]) return lca(last[a], b); return lca(last[b], a); }
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреБрди: рдореВрд▓ рджрд┐рд╢рд╛ рдореЗрдВ рдЙрдЧрддрд╛ рд╣реИред
рдП рдФрд░
рдмреА рдХреЗ рдмрд╛рдж рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдиреЗ рдХреЗ рд▓рд┐рдП
, рд╣рдо рдкрд╣рд▓реЗ рдЙрд╕ рд╢реАрд░реНрд╖ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдЕрдВрддрд┐рдо рдШреБрдорд╛рд╡ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдпрд╣ рд╕рдВрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╛ рддреЛ рд╢реАрд░реНрд╖ рд░реВрдЯ рд╕реЗ рд╡рд░реНрдЯреЗ
рдЦ рдХреЗ рдорд╛рд░реНрдЧ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рдХреМрди рд╕рд╛ рд╢реАрд░реНрд╖ рдЬрдбрд╝ рдХреЗ рдХрд░реАрдм рд╣реИ, рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдХрдо рд╕реЗ рдХрдо рдкреВрд░реНрд╡рдЬ рд╣реИред
рдЕрдиреНрдпрдерд╛, рд╢реАрд░реНрд╖ рдХреЛ
рдП рдпрд╛
рдмреА рдХреЛ рдЬрдбрд╝ рдХреЗ рдХрд░реАрдм рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдо рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХреЗ рдкреВрд░реНрд╡рдЬ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд░реВрдЯ рд╕реЗ рдЖрдЧреЗ рд╣реЛрдЧрд╛ (рдПрдХ рд╢реАрд░реНрд╖ рд▓рдЧрд╛рддрд╛рд░ рд░реВрдЯ рдХреЗ рджреВрд╕рд░реЗ рд╢рд┐рдЦрд░ рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рд╡рд░реНрдЯрд┐рдХрд▓ рдпрд╛ рддреЛ рдПрдХ рд╢реАрд░реНрд╖ рдкрд░ рдЖ рдЬрд╛рдПрдВрдЧреЗ, рдЬреЛ рддреБрд░рдВрдд рдЙрдирдХрд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬ рд╣реЛрдЧрд╛, рдпрд╛ рдПрдХ рдХреЛрдиреЗ рдореЗрдВ рдЬрдбрд╝ рд╕реЗ рджреВрд╕рд░реЗ рд╡рд░реНрдЯреЗрдХреНрд╕ рддрдХ рдорд╛рд░реНрдЧ рдкрд░ рдЭреВрда рд╣реЛрдЧрд╛, рдЬреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
O (N) рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
( 6N рдХреБрд▓ рдореЗрдореЛрд░реА рдЦрдкрдд рд╣реЛрддреА рд╣реИ),
O (N) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧрдгрдирд╛, рдФрд░
O (M * log (N)) рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордпред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЖрдкрдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреЗрдбрд╝ рдкрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП
рдУ (рд▓реЙрдЧ (рдПрди)) рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
LCA рдЦреЛрдЬ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЦрди рдЬрдЯрд┐рд▓рддрд╛, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдордп, рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдореГрддрд┐ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рднрд┐рдиреНрди рд╣реИред
1)
рд╣реЗ (рд▓реЙрдЧ рдПрди) рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм, рдУ (рдПрди) рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧрдгрдирд╛ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ "рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдкреЗрдбрд╝" рдпрд╛ "рд╡рд░реНрдЧрд░реНрдЯ-рдЕрдкрдШрдЯрди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
2)
рдмрд╛рдЗрдирд░реА рд▓рд┐рдлреНрдЯ рд╡рд┐рдзрд┐ ред O (рд▓реЙрдЧ рдПрди) рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм, рдУ (рд▓реЙрдЧ рдПрди) рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧрдгрдирд╛, рдкреНрд░рдпреБрдХреНрдд рдореЗрдореЛрд░реА (рдПрди * рд▓реЙрдЧ (рдПрди))ред рдореИрдВрдиреЗ рдЬрд┐рд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджрд┐рдпрд╛, рдЙрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝реЗ рдмреЗрд╣рддрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдХреЗ рдХрд╛рд░рдгред
3)
рдлрд░рд╛рд╣-рдХреЛрд▓реНрдЯрди рдФрд░ рдмреЗрдВрдбрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо ред рдпрд╣ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ, рдЖрдкрдХреЛ рдУ (1) рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред
рд╕рд╛рде рд╣реА рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬреЛ рдЖрдкрдХреЛ рдУ (1) рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
4)
рдЯрд╛рд░рдЬрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдордирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдереЛрдбрд╝рд╛ рддреЗрдЬреА рд╕реЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд▓рд┐рдлреНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрдо рд╕реНрдореГрддрд┐ рдФрд░ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рд░рд╛рдп рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ рддрд╛рдХрд┐ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреА рдЙрдкрдпреБрдХреНрддрддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░ рд╕рдХреЗрдВред рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред
UPD: рдЬрд╛рдирдХрд╛рд░ рд▓реЛрдЧреЛрдВ рдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдореЗрд░рд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рд╣реИрд╡реА-рд▓рд╛рдЗрдЯ рдЕрдкрдШрдЯрди рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЗрд╕ рдЕрдкрдШрдЯрди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЦреБрдж рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдкрд░ рдЕрдЪреНрдЫрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдореМрдЬреВрджрд╛ рд╣реЛред