unsigned@n,@m; int a[m],b[]; unsigned c[]; rd((a--,b--,c)(m)); unsigned@t[n]; wgraphg; g.setEdge(n,m,a,b,c); DijkstraHeaph; h.walloc(n<<10,1); h.change(0,0); while(1){ unsigned s=h.pop(); unsigned u=s>>10; unsigned w=h.val[s]; if(u==n-1){ wt(w); exit(0); } w+=t[u]; s=min(1023,(s&1023)+t[u]); rep(j,g.es[u]){ h.change(g.edge[u][j]<<10|s,w+g.cost[u][j]/s); } }