#include <bits/stdc++.h>
using namespace std;
vector<pair<long long, long long>> moves;
vector<int> out;
long long n, m;
long long nobits(long long i){
long long ot = 0;
while(i){
if(i&1) ot++;
i>>=1;
}
return ot;
}
bool isGood(long long cn){
vector<long long> look;
look.assign(n, 0);
long long k = 0;
while(cn){
if(cn&1) look[k] = 1;
cn>>=1;
k++;
}
for(pair<long long, long long> mv : moves){
if(look[mv.first] == 1 and look[mv.second] == 0) swap(look[mv.first], look[mv.second]);
}
bool st = 0;
bool ed = 0;
for(long long i = 0; i<n; i++){
if(look[i] == 1) st = 1;
if(look[i] == 0 and st) ed = 1;
if(look[i] == 1 and ed == 1) return false;
}
return true;
}
int main(){
cin>>n>>m;
for(long long i = 0; i<m; i++){
long long a, b;
cin>>a>>b;
a--; b--;
moves.push_back({a, b});
}
out.assign(n+1, 0);
long long ubound = 1;
ubound<<=n;
for(long long i = 1; i<ubound; i++){
out[nobits(i)] ^= (int)isGood(i);
}
for(long long i = 1; i<=n; i++){
cout<<out[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 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 | #include <bits/stdc++.h> using namespace std; vector<pair<long long, long long>> moves; vector<int> out; long long n, m; long long nobits(long long i){ long long ot = 0; while(i){ if(i&1) ot++; i>>=1; } return ot; } bool isGood(long long cn){ vector<long long> look; look.assign(n, 0); long long k = 0; while(cn){ if(cn&1) look[k] = 1; cn>>=1; k++; } for(pair<long long, long long> mv : moves){ if(look[mv.first] == 1 and look[mv.second] == 0) swap(look[mv.first], look[mv.second]); } bool st = 0; bool ed = 0; for(long long i = 0; i<n; i++){ if(look[i] == 1) st = 1; if(look[i] == 0 and st) ed = 1; if(look[i] == 1 and ed == 1) return false; } return true; } int main(){ cin>>n>>m; for(long long i = 0; i<m; i++){ long long a, b; cin>>a>>b; a--; b--; moves.push_back({a, b}); } out.assign(n+1, 0); long long ubound = 1; ubound<<=n; for(long long i = 1; i<ubound; i++){ out[nobits(i)] ^= (int)isGood(i); } for(long long i = 1; i<=n; i++){ cout<<out[i]<<" "; } return 0; } |
English