#include #include #include using namespace std; int N,M,P; int s,t; vectorG[1<<17]; int ds[2][1<<17],dt[2][1<<17]; main() { cin>>N>>M>>P>>s>>t; s--,t--; for(int i=0;i>u>>v; u--,v--; G[u].push_back(v); G[v].push_back(u); } for(int i=0;i >P; P.push(make_pair(0,s)); while(!P.empty()) { int c=-P.top().first,u=P.top().second; P.pop(); int f=c%2; for(int v:G[u]) { int nc=c+1; int nf=nc%2; if(ds[nf][v]>nc) { ds[nf][v]=nc; P.push(make_pair(-nc,v)); } } } dt[0][t]=0; P.push(make_pair(0,t)); while(!P.empty()) { int c=-P.top().first,u=P.top().second; P.pop(); int f=c%2; for(int v:G[u]) { int nc=c+1; int nf=nc%2; if(dt[nf][v]>nc) { dt[nf][v]=nc; P.push(make_pair(-nc,v)); } } } } vectorans; for(int i=0;i