#include<bits/stdc++.h> using namespace std; vector<pair<int,int>>kra; bool zlicz[40]; map<long long, int>policz; int main() { int n, i, m; long long maska, akt; scanf("%d%d", &n, &m); for(i=0;i<m;i++){ kra.push_back({0,0}); scanf("%d%d", &kra.back().first, &kra.back().second); kra.back().first--; kra.back().second--; } for(maska=0;maska<(1ll<<(int)n);maska++){ akt = maska; for(i=0;i<m;i++) if((akt>>kra[i].first)&1 && !((akt>>kra[i].second)&1)){ akt^=(1<<kra[i].first); akt^=(1<<kra[i].second); } // policz[akt]++; // for(i=0;i<n;i++)printf("%d", (akt>>i)&1);printf("\n"); int ile = akt&1; for(i=0;i<n-1;i++){ if((((akt>>i)&1)==0) && (((akt>>(i+1))&1)==1))ile++; } if(ile==1){ zlicz[__builtin_popcount(maska)]^=1; // printf("%lld %lld\n", maska, __builtin_popcount(maska)); } // for(i=0;i<n;i++)printf("%lld ", (akt>>i)&1);printf("\n"); } /* for(auto j: policz){ for(i=0;i<n;i++)printf("%d", (j.first>>i)&1);printf(" %d\n", j.second); }*/ for(i=1;i<=n;i++) printf("%d ", (int)zlicz[i]); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include<bits/stdc++.h> using namespace std; vector<pair<int,int>>kra; bool zlicz[40]; map<long long, int>policz; int main() { int n, i, m; long long maska, akt; scanf("%d%d", &n, &m); for(i=0;i<m;i++){ kra.push_back({0,0}); scanf("%d%d", &kra.back().first, &kra.back().second); kra.back().first--; kra.back().second--; } for(maska=0;maska<(1ll<<(int)n);maska++){ akt = maska; for(i=0;i<m;i++) if((akt>>kra[i].first)&1 && !((akt>>kra[i].second)&1)){ akt^=(1<<kra[i].first); akt^=(1<<kra[i].second); } // policz[akt]++; // for(i=0;i<n;i++)printf("%d", (akt>>i)&1);printf("\n"); int ile = akt&1; for(i=0;i<n-1;i++){ if((((akt>>i)&1)==0) && (((akt>>(i+1))&1)==1))ile++; } if(ile==1){ zlicz[__builtin_popcount(maska)]^=1; // printf("%lld %lld\n", maska, __builtin_popcount(maska)); } // for(i=0;i<n;i++)printf("%lld ", (akt>>i)&1);printf("\n"); } /* for(auto j: policz){ for(i=0;i<n;i++)printf("%d", (j.first>>i)&1);printf(" %d\n", j.second); }*/ for(i=1;i<=n;i++) printf("%d ", (int)zlicz[i]); } |