#include<bits/stdc++.h>
using namespace std;
struct Node
{
long long a,b;
};
vector<Node>U;
long long wyn[40],poww[40];
long long GetK(vector<bool>U)
{
long long u=0;
for(long long i=0;i<U.size();i++)
{
if(U[i]==1){u|=poww[i];}
}
return u;
}
long long Tyl(long long s)
{
vector<long long>A={s};
for(auto[a,b] : U)
{
vector<long long>B;
for(long long u : A)
{
bool cv1=(u&poww[a]);
bool cv2=(u&poww[b]);
if(cv1==cv2){B.push_back(u);}
else if(cv2==1)
{
B.push_back(u);
B.push_back(u^poww[a]^poww[b]);
}
}
A=B;
B.clear();
}
return (long long)A.size();
}
int main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
long long n,m;
cin>>n>>m;
poww[0]=1;
for(int i=1;i<40;i++){poww[i]=poww[i-1]*2;}
for(long long i=1;i<=m;i++)
{
long long a,b;
cin>>a>>b;
a--;
b--;
U.push_back({a,b});
}
reverse(U.begin(),U.end());
for(long long a=0;a<n;a++)
{
vector<bool>A(n);
for(long long b=a;b<n;b++)
{
A[b]=1;
long long k=GetK(A);
wyn[b-a+1]+=Tyl(k);
}
}
for(long long i=1;i<=n;i++)
{
cout<<wyn[i]%2<<" ";
}
cout<<'\n';
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #include<bits/stdc++.h> using namespace std; struct Node { long long a,b; }; vector<Node>U; long long wyn[40],poww[40]; long long GetK(vector<bool>U) { long long u=0; for(long long i=0;i<U.size();i++) { if(U[i]==1){u|=poww[i];} } return u; } long long Tyl(long long s) { vector<long long>A={s}; for(auto[a,b] : U) { vector<long long>B; for(long long u : A) { bool cv1=(u&poww[a]); bool cv2=(u&poww[b]); if(cv1==cv2){B.push_back(u);} else if(cv2==1) { B.push_back(u); B.push_back(u^poww[a]^poww[b]); } } A=B; B.clear(); } return (long long)A.size(); } int main() {ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); long long n,m; cin>>n>>m; poww[0]=1; for(int i=1;i<40;i++){poww[i]=poww[i-1]*2;} for(long long i=1;i<=m;i++) { long long a,b; cin>>a>>b; a--; b--; U.push_back({a,b}); } reverse(U.begin(),U.end()); for(long long a=0;a<n;a++) { vector<bool>A(n); for(long long b=a;b<n;b++) { A[b]=1; long long k=GetK(A); wyn[b-a+1]+=Tyl(k); } } for(long long i=1;i<=n;i++) { cout<<wyn[i]%2<<" "; } cout<<'\n'; return 0; } |
English