Go to diff to previous submission
#include <cstdio> #include <iostream> #include <vector> class point { public: std::vector<int> conn; }; int main() { int n = 0, m = 0; while( scanf( "%d %d\n", &n, &m ) == 2 ) { point p[10000]; int aux =0, aux2= 0; for ( register int i = 0; i < m; i++ ) { scanf("%d %d\n", &aux, &aux2 ); p[aux -1 ].conn.push_back( aux2 -1 ); p[aux2-1].conn.push_back( aux-1 ); } bool deg = false; int state = 0; std::vector<int> deg3; for ( register int i = 0; i < n; i++ ) { if ( p[i].conn.size() == 0 ) { state = -1; break; } else if ( p[i].conn.size() > 3 ) { state = 1; break; } else if ( p[i].conn.size() == 3 ) { deg = true; deg3.push_back( i ); } } switch( state ) { case -1 : std::cout << "NO" << std::endl; break; case 1 : std::cout << "YES" << std::endl; break; default: { if ( !deg || deg3.size() < 2 ) { std::cout << "NO" << std::endl; } else { bool bunny = false; for ( register unsigned int i = 0; i < deg3.size(); i++ ) { int len = 0; for ( register unsigned int j = 0; j < deg3.size(); j++ ) { if (j == i) continue; len = 0; for ( register unsigned int k = 0; k < 2; k++ ) { for ( register unsigned int q = 0; q < 2; q++ ) { if ( p[deg3[i]].conn[k] == p[deg3[j]].conn[q] ) { len++; } } } } if ( len <= 1 ) { bunny = true; break; } } if ( bunny ) std::cout << "YES" << std::endl; else std::cout << "NO" << std::endl; } } break; } } return 0; }
--- c5.s1058.cteam063.fn.cpp.0.fn.cpp +++ c5.s1066.cteam063.fn.cpp.0.fn.cpp @@ -70,4 +70,6 @@ for ( register unsigned int j = 0; j < deg3.size(); j++ ) { + if (j == i) + continue; len = 0; for ( register unsigned int k = 0; k < 2; k++ )