#include #include using namespace std; ifstream fin("escape.in"); ofstream fout("escape.out"); int const maxn = 1000005; int n,m,a,b,s,k; vectorv[maxn]; long long used[maxn]; long long gused[maxn]; int e[maxn]; bool eused[maxn]; void read() { fin>>n>>m>>a>>b>>s; swap(a,b); int i,x,y; for(i=1;i<=n;i++) v[i].clear(); memset(used,0,sizeof(used)); memset(gused,0,sizeof(gused)); memset(eused,0,sizeof(eused)); for(i=0; i>x>>y; v[x].push_back(y); v[y].push_back(x); } fin>>k; for(i=0; i>e[i]; eused[e[i]] = true; } } void bfs_e() { queueq; q.push(e[0]); used[e[0]] = 1; while(!q.empty()) { int t = q.front(); q.pop(); int j,sz=v[t].size(); for(j=0; jq; gused[s] = 1; q.push(s); while(!q.empty()) { int t = q.front(); q.pop(); int j, sz = v[t].size(); for(j=0; j gused[t] + a) { gused[nxt] = gused[t] + a; q.push(nxt); head[nxt] = t; if(eused[nxt]) return nxt; } } } return -1; } void solve() { bfs_e(); int ans = bfs_g(); if(ans == -1) { fout<st; int i = ans; while(i != s) { st.push(i); i = head[i]; } st.push(s); fout<>t; for(i=0;i