/*THE 嘘解法*/ #include using namespace std; struct I{I(){ios::sync_with_stdio(false);cin.tie(0);}}init; typedef vector V; typedef vector Graph; bool dfs(int v,int depth,Graph &G,vector &used,vector &near){ if(v==0)return false; if(depth==4)return near[v]==1; else{ for(auto &u:G[v]){ if(used[u]==0){ used[u]=1; if(dfs(u,depth+1,G,used,near))return true; used[u]=0; } } } return false; } int main(){ int N,M; cin>>N>>M; vector A(M),B(M); for(int i=0;i>A[i]>>B[i]; Graph g(N); for(int i=0;i dist(N,-1); dist[0]=0; queue que; que.push(0); while(que.size()){ int v=que.front();que.pop(); if(dist[v]<=1) for(auto &u:g[v]){ if(dist[u]==-1){ dist[u]=dist[v]+1; que.push(u); } } } Graph G(N); for(int i=0;i near(N,0); for(auto &v:G[0])near[v]=1; vector used(N,0); for(auto &v:G[0]){ used[v]=1; if(dfs(v,1,G,used,near)){ cout<<"YES"<