Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
飘逸的位运算scanf("%d",&N); S=0; for (int i=0;i<N;i++){ scanf("%d",&x); S^=(x<<i); } for (int i=0;i<N;i++){ scanf("%d",&x); S^=(x<<i); } for (int i=0;i<N;i++)A[i]=((S&(1<<i))&&1)+(1<<(i+1)); while (scanf("%d %d",&x,&y),x+y)A[y-1]|=(1<<x); res=N; for (int i=0;i<N;i++){ k=i; for (int j=i+1;j<N;j++)if (A[j]>A[k])k=j; x=A[i];A[i]=A[k];A[k]=x; if (A[i]<2){ res=i; break; } for (int j=i+1;j<N;j++)if (HighestBit(A[i])==HighestBit(A[j]))A[j]^=A[i]; } if (res<N && A[res])puts("Oh,it's impossible~!!"); else printf("%d\n",1<<(N-res)); Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator