#include #include #include #include using namespace std; using ll = long long; using P = pair; int main(void){ ll n, m, k, s, t; cin >> n >> m >> k >> s >> t; s--, t--; if(s>t) swap(s, t); bool con=false; vector> to(n); for(int i=0; i> u >> v; u--, v--; to[u].push_back(v); to[v].push_back(u); if(u==s&&v==t) con=true; } if(k%2){ cout << "Yes" << endl; return 0; } int S=to[s].size(), T=to[t].size(); if(S){ if(S>=2||(S==1&&!con)){ cout << "Yes" << endl; return 0; } } if(T){ if(T>=2||(T==1&&!con)){ cout << "Yes" << endl; return 0; } } if(!con){ cout << "No" << endl; return 0; } int mini=1e9; auto BFS=[&](int st){ queue

bfs; vector dist(n, vector(2, 1e9)); bfs.emplace(st, 0); dist[st][0]=0; while(bfs.size()){ auto [idx, d]=bfs.front(); bfs.pop(); if(dist[idx][d%2]!=d) continue; for(auto p:to[idx])if(p!=idx){ int nxt=d+1; if(dist[p][nxt%2]>nxt){ dist[p][nxt%2]=nxt; bfs.emplace(p, nxt); } } } return dist[st][1]; }; for(int i=0; i=k) cout << "Yes" << endl; else cout << "No" << endl; return 0; }