#include #include #include #include #include #include #include #include #include #include using namespace std; int n,m,s,t,k,a,b; vectore[200000]; int length[200000]; bool visited[200000]; void dfs(int now, int len=0) { if(visited[now]) return; visited[now]=true; length[now]=len; for(int nxt:e[now]) dfs(nxt, len+1); } int main() { cin >> n >> m >> s >> t >> k; s--;t--; for(int i=0;i> a >> b; a--;b--; e[a].push_back(b); e[b].push_back(a); } //同じであるとき if(s==t) { //1点のみならパスが存在しない if(n==1) cout << "No" << endl; //偶数回移動して戻ってこれる else if(k%2==0) { //無条件Yes //24-25X //unknown //31-32X if(e[s].size()) cout << "Yes" << endl; else cout << "Unknown" << endl; } //これない else { cout << "No" << endl; } return 0; } dfs(s); if(visited[t]) { if(length[t]%2!=k%2) { cout << "No" << endl; } else { if(length[t]<=k) { cout << "Yes" << endl; } else { cout << "Unknown" << endl; } } } else { cout << "Unknown" << endl; } }