#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; int main() { int n, m, s, t; cin>>n>>m>>s>>t; int p[100010]; for(int i=0; i>p[i]; } s--; t--; vector g[100010]; for(int i=0; i>a>>b; a--; b--; g[a].push_back(b); g[b].push_back(a); } priority_queue

que; que.push({p[s], s}); bool used[100010]={}; used[s]=1; int cnt=0, val=p[s]; while(!que.empty()){ P q=que.top(); que.pop(); if(val>q.first){ val=q.first; cnt++; } int x=q.second; for(auto y:g[x]){ if(!used[y]){ used[y]=1; que.push({p[y], y}); } } } cout<