int p[1d5],a[1d5],b[1d5]; { int @n,@m,@s,@t; --s; rd(p(n),(a--,b--)(m)); graph g; g.setEdge(n,m,a,b); int x=p[s],y=0; DijkstraHeap h; h.walloc(n); h.init(n); h.change(s,-p[s]); while(h.size){ int i=h.pop(); if(x>p[i]){ x=p[i]; y+=1; } rep[g.edge[i]](j,g.es[i]){ h.change(j,-p[j]); } } wt(y); }