Go to diff to previous submission
#include <stdio.h> #include <vector> using namespace std; vector <int> v; vector <int> un; vector <int> vysl; vector <int> velk; int find(int a){ while(un[a]!=a){ a = un[a]; } return a; } void uni(int a, int b){ int aa = find(a); int bb = find(b); if(aa!=bb){ if(velk[aa] <= velk[bb]){ un[aa] = bb; velk[bb] += velk[aa]; } else{ un[bb] = aa; velk[aa] += velk[bb]; } } } int connected(int a, int b){ int aa = find(a); int bb = find(b); if(aa == bb) return 1; else return 0; } int main(){ int n,m,a,b; while(scanf("%d %d", &n,&m) == 2){ int uspech = 0; v.clear(); un.clear(); vysl.clear(); velk.clear(); //vector<int> h(n); for(int i=0; i<n; i++){ v.push_back(0); un.push_back(i); vysl.push_back(0); velk.push_back(1); //h[i]=0; } for(int i = 0; i<m; i++){ scanf("%d %d", &a,&b); a--; b--; if(connected(a,b) == 0){ v[a]++; v[b]++; uni(a,b); } //else {printf ("SPOJENE\n");} } for(int i=0; i<n; i++){ int koren; if(v[i]==1){ koren = find(i); vysl[koren]++; if(vysl[koren] >= 4){ uspech = 1; break; } } } /* printf("v: "); for(int i=0; i<n; i++){ printf("%d ", v[i]); } printf("\n"); printf("un: "); for(int i=0; i<n; i++){ printf("%d ", un[i]); } printf("\n"); printf("vysl: "); for(int i=0; i<n; i++){ printf("%d ", vysl[i]); } printf("\n"); */ if(uspech == 1){ printf("YES\n"); } else { printf("NO\n"); } } return 0; }
--- c5.s828.cteam077.fn.cpp.0.fn.cpp +++ c5.s837.cteam077.fn.cpp.0.fn.cpp @@ -92,9 +92,11 @@ koren = find(i); vysl[koren]++; + if(vysl[koren] >= 4){ + uspech = 1; + break; + } } - if(vysl[koren] >= 4){ - uspech = 1; - } + }