Go to diff to previous submission
#include <bits/stdc++.h> using namespace std; int main() { int N,M; while(cin >> N >> M) { vector< vector<int> > G(N); vector<int> D(N,0); vector<int> d3; for(int i =0; i < M; i++){ int a,b; cin >> a >> b; G[--a].push_back(--b); G[b].push_back(a); D[a]++, D[b]++;} int maxD =0; for(int i =0; i < N; i++) { if(D[i] == 3) d3.push_back(i); maxD =max(maxD,D[i]);} if(maxD > 3) {cout << "YES\n"; continue;} if(maxD < 3) {cout << "NO\n"; continue;} vector<int> comp(N,-1); int c =0; queue<int> q; for(int k =0; k < N; k++) if(comp[k] == -1) { q.push(k); comp[k] =c; while(!q.empty()) { int a =q.front(); for(int i =0; i < G[a].size(); i++) if(comp[G[a][i]] == -1) { comp[G[a][i]] =c; q.push(G[a][i]);} q.pop();} c++;} bool ok =false; for(int i =0; i < d3.size(); i++) for(int j =0; j < d3.size(); j++) if(comp[d3[i]] == comp[d3[j]]) { int com =0, a =d3[i], b =d3[j]; for(int k =0; k < 3; k++) for(int l =0; l < 3; l++) if(G[a][k] == G[b][l]) com++; bool hr =false; for(int k =0; k < 3; k++) if(G[a][k] == b) hr =true; if(hr && com == 0) ok =true; if(!hr && com <= 1) ok =true;} if(ok) cout << "YES\n"; else cout << "NO\n";} return 0;}
--- c5.s636.cteam002.fn.cpp.0.fn.cpp +++ c5.s688.cteam002.fn.cpp.0.fn.cpp @@ -14,9 +14,9 @@ G[b].push_back(a); D[a]++, D[b]++;} - int maxD =0; + int maxD =0; for(int i =0; i < N; i++) { if(D[i] == 3) d3.push_back(i); maxD =max(maxD,D[i]);} - if(maxD > 3 || d3.size() > 42) {cout << "YES\n"; continue;} + if(maxD > 3) {cout << "YES\n"; continue;} if(maxD < 3) {cout << "NO\n"; continue;}