#include <bits/stdc++.h> using namespace std; int operacje_a[1007]; int operacje_b[1007]; unordered_map <int, int> wyniki; int n, m; int sprawdz (int liczba){ int a, b; //wypisz(liczba, n); for (int i = 0; i < m; ++i){ //cout << operacje_a[i] - 1 << " " << operacje_b[i] - 1 << "\n"; a = liczba & (1 << (operacje_a[i] - 1)); b = liczba & (1 << (operacje_b[i] - 1)); //cout << a << " " << b << "\n"; if (a != 0){ if (b == 0){ //cout << "ZMIEŃ!" << "\n"; liczba = liczba ^ (1 << (operacje_b[i] - 1)); liczba = liczba ^ (1 << (operacje_a[i] - 1)); } } //wypisz(liczba, n); } bool zero_konczy = false; while (liczba != 0){ int bit = (1 << 0) & liczba; liczba /= 2; if (!zero_konczy){ if (bit > 0){ zero_konczy = true; } } else{ if (bit == 0){ //cout << 0 << "\n"; return 0; } } } //cout << 1 << "\n"; return 1; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for (int i = 0; i < m; ++i){ cin >> operacje_a[i] >> operacje_b[i]; } for (int i = 1; i < (1 << n); ++i){ int x = sprawdz(i); int ile_bitow = __builtin_popcount(i); wyniki[ile_bitow] += x; wyniki[ile_bitow] %= 2; } for (int i = 1; i <= n; ++i){ cout << wyniki[i] << " "; } cout << "\n"; }
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 | #include <bits/stdc++.h> using namespace std; int operacje_a[1007]; int operacje_b[1007]; unordered_map <int, int> wyniki; int n, m; int sprawdz (int liczba){ int a, b; //wypisz(liczba, n); for (int i = 0; i < m; ++i){ //cout << operacje_a[i] - 1 << " " << operacje_b[i] - 1 << "\n"; a = liczba & (1 << (operacje_a[i] - 1)); b = liczba & (1 << (operacje_b[i] - 1)); //cout << a << " " << b << "\n"; if (a != 0){ if (b == 0){ //cout << "ZMIEŃ!" << "\n"; liczba = liczba ^ (1 << (operacje_b[i] - 1)); liczba = liczba ^ (1 << (operacje_a[i] - 1)); } } //wypisz(liczba, n); } bool zero_konczy = false; while (liczba != 0){ int bit = (1 << 0) & liczba; liczba /= 2; if (!zero_konczy){ if (bit > 0){ zero_konczy = true; } } else{ if (bit == 0){ //cout << 0 << "\n"; return 0; } } } //cout << 1 << "\n"; return 1; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for (int i = 0; i < m; ++i){ cin >> operacje_a[i] >> operacje_b[i]; } for (int i = 1; i < (1 << n); ++i){ int x = sprawdz(i); int ile_bitow = __builtin_popcount(i); wyniki[ile_bitow] += x; wyniki[ile_bitow] %= 2; } for (int i = 1; i <= n; ++i){ cout << wyniki[i] << " "; } cout << "\n"; } |