priority_queue>>q; ll@n,@k,@m,@p; int u[m],v[]; rd((u--,v--)(m)); graph g; g.setEdge(n,m,u,v); ll@s[n],r[n]{},t[n]{}; rep(k){ ll@x--; t[x]=1; rep(j,g.es[x]){ ll a=g.edge[x][j]; q.push({-s[x],{x,a}}); } } while(!q.empty()){ auto b=q.top(); q.pop(); ll d=-b.first; ll f=b.second.first; if(t[f]!=2||r[f]==d){ ll x=b.second.second; if(!t[x]){ t[x]=1; r[x]=d; rep(j,g.es[x]){ ll a=g.edge[x][j]; q.push({-(d+s[x]),{x,a}}); } }else if(t[x]==1&&d-r[x]