#include<bits/stdc++.h> #define LL long long #define LLL __int128 #define uint unsigned #define ldb long double #define uLL unsigned long using namespace std; const int N=35,M=1e3+5; int n,m,a[M],b[M],c0[N],c1[N],ans[N]; inline void solve(vector<int>c,int k){ if(k>=m){ for(int i=0;i<n;++i)c0[i+1]=c0[i]+(c[i]==0),c1[i+1]=c1[i]+(c[i]==1); for(int l=1;l<=n;++l)for(int r=l;r<=n;++r) if(!c1[l-1]&&c1[r]==c1[n]&&c0[l-1]==c0[r])ans[r-l]^=1; } else if(c[a[k]]==-1&&c[b[k]]==-1) c[a[k]]=c[b[k]]=0,solve(c,k+1),c[a[k]]=c[b[k]]=1,solve(c,k+1),c[a[k]]=c[b[k]]=-1; else if(c[a[k]]==-1) if(c[b[k]]==1)solve(c,k+1); else swap(c[a[k]],c[b[k]]),solve(c,k+1); else if(c[b[k]]==-1) if(c[a[k]]==0)solve(c,k+1); else swap(c[a[k]],c[b[k]]),solve(c,k+1); else if(c[a[k]]>c[b[k]])swap(c[a[k]],c[b[k]]),solve(c,k+1); else solve(c,k+1); } signed main(){ cin.tie(0)->sync_with_stdio(0); cin>>n>>m; for(int i=0;i<m;++i)cin>>a[i]>>b[i],--a[i],--b[i]; solve(vector<int>(n,-1),0); for(int i=0;i<n;++i)cout<<ans[i]<<' '; 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 | #include<bits/stdc++.h> #define LL long long #define LLL __int128 #define uint unsigned #define ldb long double #define uLL unsigned long using namespace std; const int N=35,M=1e3+5; int n,m,a[M],b[M],c0[N],c1[N],ans[N]; inline void solve(vector<int>c,int k){ if(k>=m){ for(int i=0;i<n;++i)c0[i+1]=c0[i]+(c[i]==0),c1[i+1]=c1[i]+(c[i]==1); for(int l=1;l<=n;++l)for(int r=l;r<=n;++r) if(!c1[l-1]&&c1[r]==c1[n]&&c0[l-1]==c0[r])ans[r-l]^=1; } else if(c[a[k]]==-1&&c[b[k]]==-1) c[a[k]]=c[b[k]]=0,solve(c,k+1),c[a[k]]=c[b[k]]=1,solve(c,k+1),c[a[k]]=c[b[k]]=-1; else if(c[a[k]]==-1) if(c[b[k]]==1)solve(c,k+1); else swap(c[a[k]],c[b[k]]),solve(c,k+1); else if(c[b[k]]==-1) if(c[a[k]]==0)solve(c,k+1); else swap(c[a[k]],c[b[k]]),solve(c,k+1); else if(c[a[k]]>c[b[k]])swap(c[a[k]],c[b[k]]),solve(c,k+1); else solve(c,k+1); } signed main(){ cin.tie(0)->sync_with_stdio(0); cin>>n>>m; for(int i=0;i<m;++i)cin>>a[i]>>b[i],--a[i],--b[i]; solve(vector<int>(n,-1),0); for(int i=0;i<n;++i)cout<<ans[i]<<' '; return 0; } /* */ |