#include <iostream>
using namespace std;
int suma(int n)
{
    int odp=0;
    while(n>0){
        odp=odp+(n%2);
        n=n/2;
    }
    return odp;
}
int rozkaz[1'007][2];
int maska[40];
int out[40];
int main()
{
    int n, m, ost, pie;
    cin>>n>>m;
    for(int a=0; a<m; a++)
        cin>>rozkaz[a][0]>>rozkaz[a][1];
    for(int a=0; a<(1<<n); a++)
    {
        for(int i=0; i<n; i++)
            maska[i]=(a/(1<<i))%2;
        for(int i=0; i<m; i++)
        {
            if(maska[rozkaz[i][0]-1]==1)
                swap(maska[rozkaz[i][0]-1],maska[rozkaz[i][1]-1]);
        }
        pie=-1;
        for(int i=0; i<n; i++)
        {
            if(maska[i]==1)
                ost=i;
            if(maska[i]==1 && pie==-1)
                pie=i;
        }
        if((ost-pie+1)==suma(a))
            out[suma(a)]++;
        out[suma(a)]=(out[suma(a)])%2;
    }
    for(int a=1; a<=n; a++)
        cout<<out[a]<<" ";
}
        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  | #include <iostream> using namespace std; int suma(int n) { int odp=0; while(n>0){ odp=odp+(n%2); n=n/2; } return odp; } int rozkaz[1'007][2]; int maska[40]; int out[40]; int main() { int n, m, ost, pie; cin>>n>>m; for(int a=0; a<m; a++) cin>>rozkaz[a][0]>>rozkaz[a][1]; for(int a=0; a<(1<<n); a++) { for(int i=0; i<n; i++) maska[i]=(a/(1<<i))%2; for(int i=0; i<m; i++) { if(maska[rozkaz[i][0]-1]==1) swap(maska[rozkaz[i][0]-1],maska[rozkaz[i][1]-1]); } pie=-1; for(int i=0; i<n; i++) { if(maska[i]==1) ost=i; if(maska[i]==1 && pie==-1) pie=i; } if((ost-pie+1)==suma(a)) out[suma(a)]++; out[suma(a)]=(out[suma(a)])%2; } for(int a=1; a<=n; a++) cout<<out[a]<<" "; }  | 
            
        
                    English