#include #include using namespace std; using ll = long long; int main() { // s-t みたいな時、Kが奇数なら行き来するだけでいい?? // K=2nかつs, t が孤立してる時だけ無理? ll N, M, K, s, t; cin >> N >> M >> K >> s >> t; vector U(M), V(M); unordered_set ss, ts; vector E(N, vector()); s--; t--; for (int i=0;i> U[i] >> V[i]; U[i]--; V[i]--; E[U[i]].push_back(V[i]); E[V[i]].push_back(U[i]); if (U[i]==s) ss.insert(V[i]); if (V[i]==s) ss.insert(U[i]); if (U[i]==t) ts.insert(V[i]); if (V[i]==t) ts.insert(U[i]); } // s,tにつなげた点xが奇数回ターンを潰せること // 奇数の頂点を持つサイクルをとれたらいい // -> BFSして他の点スタートと合流する bool condition_x = false; for (int i=0;i dist(N,1e9); queue q; q.push(i); dist[i] = 0; while(!q.empty()) { int c = q.front(); q.pop(); for (int nx: E[c]) { ll cost = (ll)dist[c] + 1L; if (dist[nx]<1e9) { int total = dist[nx] + dist[c]; if (total%2==0 && total