#include <bits/stdc++.h> using namespace std; constexpr int maxN = 35, maxM = 1e3; int n, m; int a[maxM + 1], b[maxM + 1]; bool ans[maxN + 1]; bool lit(int &num, int &pos) { return num & (1 << pos); } void flip(int &num, int &pos) { num ^= (1 << pos); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for(int i=1; i<=m; i++) { cin >> a[i] >> b[i]; a[i]--; b[i]--; } for(int i=1; i<(1<<n); i++) { int i_cpy = i; for(int j=1; j<=m; j++) { if(lit(i_cpy, a[j]) && !lit(i_cpy, b[j])) { flip(i_cpy, a[j]); flip(i_cpy, b[j]); } } int bits = __builtin_popcount(i_cpy); if(32 - __builtin_clz(i_cpy) - __builtin_ctz(i_cpy) == bits) { ans[bits] ^= 1; } } for(int i=1; i<=n; i++) { cout << ans[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 45 46 47 48 49 50 51 52 53 | #include <bits/stdc++.h> using namespace std; constexpr int maxN = 35, maxM = 1e3; int n, m; int a[maxM + 1], b[maxM + 1]; bool ans[maxN + 1]; bool lit(int &num, int &pos) { return num & (1 << pos); } void flip(int &num, int &pos) { num ^= (1 << pos); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for(int i=1; i<=m; i++) { cin >> a[i] >> b[i]; a[i]--; b[i]--; } for(int i=1; i<(1<<n); i++) { int i_cpy = i; for(int j=1; j<=m; j++) { if(lit(i_cpy, a[j]) && !lit(i_cpy, b[j])) { flip(i_cpy, a[j]); flip(i_cpy, b[j]); } } int bits = __builtin_popcount(i_cpy); if(32 - __builtin_clz(i_cpy) - __builtin_ctz(i_cpy) == bits) { ans[bits] ^= 1; } } for(int i=1; i<=n; i++) { cout << ans[i] << ' '; } } |