#include #define pt(sth) cout << sth << "\n" #define itr(x,c) for(auto x=c.begin();x!=c.end();x++) #define all(a) (a.begin()),(a.end()) using namespace std; #include using namespace atcoder; typedef long long ll; typedef pair pll; templatebool chmax(T &a, const T &b) {if(abool chmin(T &a, const T &b) {if(b>a[i]; typedef vector v1D; typedef vector v2D; typedef vector v3D; int main(void) { ll i,j,k; ll N,M,S,T;cin>>N>>M>>S>>T;S--;T--; vector a(N); for(i=0;i>a[i]; vector g[MAX]; for(i=0;i>x>>y;x--;y--; g[x].push_back(y); g[y].push_back(x); } auto solve=[&](){ ll res=0; ll X=a[S]; priority_queue q; q.push({a[S],S}); vector clr(N,0); while(q.size()){ pll p=q.top();q.pop(); ll u=p.second; ll d=p.first; if(clr[u]) continue; clr[u]=1; res+=chmin(X,d); for(auto v:g[u]) q.push({a[v],v}); } return res; }; pt(solve()); }