ll@n,d[n][n],x[n],y[n],t[n]; rd((x,y,t)(n)); rep(i,n){ rep(j,i){ d[i][j]=d[j][i]= t[i]==t[j] ? (x[i]-x[j])**2+(y[i]-y[j])**2 : x[i]**2+y[i]**2+x[j]**2+y[j]**2-Isqrt(4*(x[i]**2+y[i]**2)*(x[j]**2+y[j]**2)); } } DijkstraHeaph; h.malloc(n,1); h.change(0,0); while(h.size){ ll i=h.pop(); rep(j,n){ h.change(j,max(h.val[i],d[i][j])); } } wt(h.val[n-1]);