#include<bits/stdc++.h>
using namespace std;
vector<pair<int,int>>kra;
bool zlicz[40];
map<long long, int>policz;
int main()
{
int n, i, m;
long long maska, akt;
scanf("%d%d", &n, &m);
for(i=0;i<m;i++){
kra.push_back({0,0});
scanf("%d%d", &kra.back().first, &kra.back().second);
kra.back().first--;
kra.back().second--;
}
for(maska=0;maska<(1ll<<(int)n);maska++){
akt = maska;
for(i=0;i<m;i++)
if((akt>>kra[i].first)&1 && !((akt>>kra[i].second)&1)){
akt^=(1<<kra[i].first);
akt^=(1<<kra[i].second);
}
// policz[akt]++;
// for(i=0;i<n;i++)printf("%d", (akt>>i)&1);printf("\n");
int ile = akt&1;
for(i=0;i<n-1;i++){
if((((akt>>i)&1)==0) && (((akt>>(i+1))&1)==1))ile++;
}
if(ile==1){
zlicz[__builtin_popcount(maska)]^=1;
// printf("%lld %lld\n", maska, __builtin_popcount(maska));
}
// for(i=0;i<n;i++)printf("%lld ", (akt>>i)&1);printf("\n");
}
/*
for(auto j: policz){
for(i=0;i<n;i++)printf("%d", (j.first>>i)&1);printf(" %d\n", j.second);
}*/
for(i=1;i<=n;i++)
printf("%d ", (int)zlicz[i]);
}
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 | #include<bits/stdc++.h> using namespace std; vector<pair<int,int>>kra; bool zlicz[40]; map<long long, int>policz; int main() { int n, i, m; long long maska, akt; scanf("%d%d", &n, &m); for(i=0;i<m;i++){ kra.push_back({0,0}); scanf("%d%d", &kra.back().first, &kra.back().second); kra.back().first--; kra.back().second--; } for(maska=0;maska<(1ll<<(int)n);maska++){ akt = maska; for(i=0;i<m;i++) if((akt>>kra[i].first)&1 && !((akt>>kra[i].second)&1)){ akt^=(1<<kra[i].first); akt^=(1<<kra[i].second); } // policz[akt]++; // for(i=0;i<n;i++)printf("%d", (akt>>i)&1);printf("\n"); int ile = akt&1; for(i=0;i<n-1;i++){ if((((akt>>i)&1)==0) && (((akt>>(i+1))&1)==1))ile++; } if(ile==1){ zlicz[__builtin_popcount(maska)]^=1; // printf("%lld %lld\n", maska, __builtin_popcount(maska)); } // for(i=0;i<n;i++)printf("%lld ", (akt>>i)&1);printf("\n"); } /* for(auto j: policz){ for(i=0;i<n;i++)printf("%d", (j.first>>i)&1);printf(" %d\n", j.second); }*/ for(i=1;i<=n;i++) printf("%d ", (int)zlicz[i]); } |
English