#include<iostream>
using namespace std;
unsigned long long pow(int n, int k)
{
unsigned long long sn=1, sk=1, s=1, nk=n-k, p;
for(int i=1; i<=n; i++)
sn*=i;
for(int j=1; j<=k; j++)
sk*=j;
for(int l=1; l<=nk; l++)
s*=l;
p=sn/(sk*s);
return p;
}
unsigned long long bin(int a)
{
unsigned long long w=1, b=0;
while(a!=0)
{
b+=a%2*w;
a/=2;
w*=10;
}
return b;
}
int main()
{
int n, m;
cin>>n>>m;
int t[n], rj[m], rd[m], iw[n]={0}, a, lz, c, k, d=0, b; //iw - ilosc kombinacji spelniajacych warunek po rozkazach, lz-liczba roznic miedzy gotowoscia
for(int ki=1; ki<=n; ki++)
{
d+=pow(n, ki);
}
for(int e=0; e<m; e++) //uzupelnienie tablicy z rozkazami
{
cin>>rj[e]>>rd[e];
}
for(int i=1; i<=d; i++) //ulozenie gotowych
{
lz=0;
k=0;
a=bin(i);
for(int j=n-1; j>=0; j--) //wczytanie ulozenia do tablicy
{
if(a==0)
t[j]=0;
else
{
t[j]=a%10;
a/=10;
}
}
for(int l=0; l<m; l++) //wykonanie rozkazow
{
b=rj[l];
c=rd[l];
if(t[b-1]==1 && t[c-1]==0)
{
t[b-1]--;
t[c-1]++;
}
}
for(int x=1; x<n; x++) //sprawdzenie ciagu
{
if(t[x-1]==0 && t[x]==1)
lz++;
}
for(int x=0; x<n; x++)
{
if(t[x]==1)
k++;
}
if((t[0]==0 && lz==1) || lz==0 || k==1)
iw[k-1]++;
}
for(int z=0; z<n; z++)
cout<<iw[z]%2<<" ";
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #include<iostream> using namespace std; unsigned long long pow(int n, int k) { unsigned long long sn=1, sk=1, s=1, nk=n-k, p; for(int i=1; i<=n; i++) sn*=i; for(int j=1; j<=k; j++) sk*=j; for(int l=1; l<=nk; l++) s*=l; p=sn/(sk*s); return p; } unsigned long long bin(int a) { unsigned long long w=1, b=0; while(a!=0) { b+=a%2*w; a/=2; w*=10; } return b; } int main() { int n, m; cin>>n>>m; int t[n], rj[m], rd[m], iw[n]={0}, a, lz, c, k, d=0, b; //iw - ilosc kombinacji spelniajacych warunek po rozkazach, lz-liczba roznic miedzy gotowoscia for(int ki=1; ki<=n; ki++) { d+=pow(n, ki); } for(int e=0; e<m; e++) //uzupelnienie tablicy z rozkazami { cin>>rj[e]>>rd[e]; } for(int i=1; i<=d; i++) //ulozenie gotowych { lz=0; k=0; a=bin(i); for(int j=n-1; j>=0; j--) //wczytanie ulozenia do tablicy { if(a==0) t[j]=0; else { t[j]=a%10; a/=10; } } for(int l=0; l<m; l++) //wykonanie rozkazow { b=rj[l]; c=rd[l]; if(t[b-1]==1 && t[c-1]==0) { t[b-1]--; t[c-1]++; } } for(int x=1; x<n; x++) //sprawdzenie ciagu { if(t[x-1]==0 && t[x]==1) lz++; } for(int x=0; x<n; x++) { if(t[x]==1) k++; } if((t[0]==0 && lz==1) || lz==0 || k==1) iw[k-1]++; } for(int z=0; z<n; z++) cout<<iw[z]%2<<" "; return 0; } |
English