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 main(){ int n,m,a,b; while(scanf("%d %d", &n,&m) == 2){ int uspech = 0; v.clear(); un.clear(); vysl.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--; v[a]++; v[b]++; uni(a,b); } for(int i=0; i<n; i++){ int koren; if(v[i]==1){ koren = find(i); vysl[koren]++; } if(vysl[koren] >= 4){ uspech = 1; } } 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.s738.cteam077.fn.cpp.0.fn.cpp +++ c5.s756.cteam077.fn.cpp.0.fn.cpp @@ -42,7 +42,7 @@ int n,m,a,b; - int uspech = 0; while(scanf("%d %d", &n,&m) == 2){ + int uspech = 0; v.clear(); @@ -84,5 +84,5 @@ } - /* + printf("v: "); for(int i=0; i<n; i++){ @@ -102,5 +102,5 @@ } printf("\n"); - */ + if(uspech == 1){