#include <bits/stdc++.h> using namespace std; int n, m; vector<pair<int, int>> komendy_odw; bool rekurencja(int x, bitset<36> stan){ if(x==-1) return true; bitset<36> stan2; bitset<36> stan3; if(stan[komendy_odw[x].second] && !stan[komendy_odw[x].first]) return 0; else if(stan[komendy_odw[x].second] && stan[komendy_odw[x].first]) return rekurencja(x-1, stan); else if(!stan[komendy_odw[x].second] && stan[komendy_odw[x].first]){ stan2=stan; stan3=stan; stan2[komendy_odw[x].second]=1; stan2[komendy_odw[x].first]=0; stan3[komendy_odw[x].second]=0; stan3[komendy_odw[x].first]=1; return rekurencja(x-1, stan2)^rekurencja(x-1, stan3); } else return rekurencja(x-1, stan); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>m; int a, b; for(int i=0; i<m; i++){ cin>>a>>b; komendy_odw.push_back({b-1, a-1}); } for(int i=1; i<=n; i++){ bitset<36> stan; bool wyn=false; for(int j=0; j<i; j++){ stan[j]=1; } for(int j=0; j<=n-i; j++){ wyn^=rekurencja(m-1, stan); stan<<=1; } cout<<wyn<<' '; } return 0; }
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 | #include <bits/stdc++.h> using namespace std; int n, m; vector<pair<int, int>> komendy_odw; bool rekurencja(int x, bitset<36> stan){ if(x==-1) return true; bitset<36> stan2; bitset<36> stan3; if(stan[komendy_odw[x].second] && !stan[komendy_odw[x].first]) return 0; else if(stan[komendy_odw[x].second] && stan[komendy_odw[x].first]) return rekurencja(x-1, stan); else if(!stan[komendy_odw[x].second] && stan[komendy_odw[x].first]){ stan2=stan; stan3=stan; stan2[komendy_odw[x].second]=1; stan2[komendy_odw[x].first]=0; stan3[komendy_odw[x].second]=0; stan3[komendy_odw[x].first]=1; return rekurencja(x-1, stan2)^rekurencja(x-1, stan3); } else return rekurencja(x-1, stan); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>m; int a, b; for(int i=0; i<m; i++){ cin>>a>>b; komendy_odw.push_back({b-1, a-1}); } for(int i=1; i<=n; i++){ bitset<36> stan; bool wyn=false; for(int j=0; j<i; j++){ stan[j]=1; } for(int j=0; j<=n-i; j++){ wyn^=rekurencja(m-1, stan); stan<<=1; } cout<<wyn<<' '; } return 0; } |