#include<bits/stdc++.h> #define pb push_back #define pob pop_back #define eb emplace_back #define fi first #define se second #define turbo ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define mid ((l+r)/2) #define midLL ((l+r)/2LL) #define mide ((lo+hi)/2) #define mideLL ((lo+hi)/2LL) #define endl '\n' #define random_shuffle shandom_ruffle #define lowbit(x) (x&(-x)) #define bits(x) __builtin_popcount(x) #define mins(se) (*se.begin()) #define maxs(se) (*--se.end()) #define all(x) x.begin(), x.end() #define log2_floor(i) (i ? __builtin_clzll(1) - __builtin_clzll(i) : -1) #define siz(cont) ((int)cont.size()) #define each(it, cont) for(auto &it : cont) using ll = long long; using pii = std::pair<int, int>; using pll = std::pair<ll, ll>; using pli = std::pair<ll, int>; using pil = std::pair<int, ll>; using vll = std::vector<pll>; using vii = std::vector<pii>; using vi = std::vector<int>; using vl = std::vector<ll>; using vvl = std::vector<vl>; using vvi = std::vector<vi>; using vvii = std::vector<vii>; using vli = std::vector<pli>; using vvli = std::vector<vli>; using vil = std::vector<pil>; using vvil = std::vector<vil>; using vc = std::vector<char>; using vvc = std::vector<std::vector<char>>; using vb = std::vector<bool>; using vvb = std::vector<vb>; void err() { std::cout << "\n"; fflush(stdout); } template<class T, class... Ts> void err(T arg, Ts &... args) { std::cout << arg << ' '; err(args...); } using namespace std; int n, m; vii v; bool git(int x) { int last = lowbit(x); x -= last; while (x) { int low = lowbit(x); if (last * 2 != low) return false; x -= low; last = low; } return true; } void out(int x) { for (int i = 1; i <= x; i*=2) cout << (bool)(x&i) << ' '; cout << endl; } int order(int x, int a, int b) { if ((x&(1<<(a-1))) and !(x&(1<<(b-1)))) { x -= (1<<(a-1)); x += (1<<(b-1)); } return x; } int miel(int x) { for (auto [a, b] : v) x = order(x, a, b); return x; } signed main() { turbo; cin >> n >> m; v = vii(m); for (auto &[a, b] : v) cin >> a >> b; vi res(50); for (int x = 1; x < (1<<n); x++) if (git(miel(x))) res[bits(x)]++; for (int i = 1; i <= n; i++) cout << res[i]%2 << ' '; }
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | #include<bits/stdc++.h> #define pb push_back #define pob pop_back #define eb emplace_back #define fi first #define se second #define turbo ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define mid ((l+r)/2) #define midLL ((l+r)/2LL) #define mide ((lo+hi)/2) #define mideLL ((lo+hi)/2LL) #define endl '\n' #define random_shuffle shandom_ruffle #define lowbit(x) (x&(-x)) #define bits(x) __builtin_popcount(x) #define mins(se) (*se.begin()) #define maxs(se) (*--se.end()) #define all(x) x.begin(), x.end() #define log2_floor(i) (i ? __builtin_clzll(1) - __builtin_clzll(i) : -1) #define siz(cont) ((int)cont.size()) #define each(it, cont) for(auto &it : cont) using ll = long long; using pii = std::pair<int, int>; using pll = std::pair<ll, ll>; using pli = std::pair<ll, int>; using pil = std::pair<int, ll>; using vll = std::vector<pll>; using vii = std::vector<pii>; using vi = std::vector<int>; using vl = std::vector<ll>; using vvl = std::vector<vl>; using vvi = std::vector<vi>; using vvii = std::vector<vii>; using vli = std::vector<pli>; using vvli = std::vector<vli>; using vil = std::vector<pil>; using vvil = std::vector<vil>; using vc = std::vector<char>; using vvc = std::vector<std::vector<char>>; using vb = std::vector<bool>; using vvb = std::vector<vb>; void err() { std::cout << "\n"; fflush(stdout); } template<class T, class... Ts> void err(T arg, Ts &... args) { std::cout << arg << ' '; err(args...); } using namespace std; int n, m; vii v; bool git(int x) { int last = lowbit(x); x -= last; while (x) { int low = lowbit(x); if (last * 2 != low) return false; x -= low; last = low; } return true; } void out(int x) { for (int i = 1; i <= x; i*=2) cout << (bool)(x&i) << ' '; cout << endl; } int order(int x, int a, int b) { if ((x&(1<<(a-1))) and !(x&(1<<(b-1)))) { x -= (1<<(a-1)); x += (1<<(b-1)); } return x; } int miel(int x) { for (auto [a, b] : v) x = order(x, a, b); return x; } signed main() { turbo; cin >> n >> m; v = vii(m); for (auto &[a, b] : v) cin >> a >> b; vi res(50); for (int x = 1; x < (1<<n); x++) if (git(miel(x))) res[bits(x)]++; for (int i = 1; i <= n; i++) cout << res[i]%2 << ' '; } |