#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"; } |
English