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