furry.cpp
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
struct Node{
Node(){
visited = false;
}
bool visited;
vector<int> edges;
};
vector<Node> nodes;
bool hasZajac(int node,bool tri){
if(nodes[node].visited)
return false;
nodes[node].visited = true;
if(nodes[node].edges.size()==3){
if(tri)
return true;
tri = true;
}
if(nodes[node].edges.size() > 3 ){
return true;
}
for( int i = 0; i < nodes[node].edges.size(); i++ ){
if(hasZajac(nodes[node].edges[i],tri))
return true;
}
return false;
}
int main(int argc, char * argv[]){
int n,m,a,b;
while(scanf("%d%d",&n,&m)==2){
nodes.resize(0);
nodes.resize(n);
for( int i = 0; i < m; i++ ){
scanf("%d%d",&a,&b);
a--;
b--;
nodes[a].edges.push_back(b);
nodes[b].edges.push_back(a);
}
bool zajacfound = false;
for( int i = 0; i < nodes.size(); i++ ){
if(!nodes[i].visited){
if(hasZajac(i,false)){
zajacfound = true;
break;
}
}
}
printf("%s\n",zajacfound?"YES":"NO");
}
return 0;
}