| 1234 |
- #include <iostream>
- #include <vector>
- using namespace std;
- int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int T;cin>>T;while(T--){int n;cin>>n;vector<int>from(n),to(n);for(int&x:from)cin>>x;for(int&x:to)cin>>x;vector<vector<int>>a(n,vector<int>(n+1));for(int i=0;i<n;++i)a[i][i]=1,a[i][n]=from[i]^to[i];int u,v;while(cin>>u>>v&&u+v){a[v-1][u-1]^=1;}int row=0;for(int col=0;col<n&&row<n;++col){int p=row;while(p<n&&!a[p][col])++p;if(p==n)continue;swap(a[p],a[row]);for(int i=0;i<n;++i)if(i!=row&&a[i][col])for(int j=col;j<=n;++j)a[i][j]^=a[row][j];++row;}bool bad=false;for(int i=row;i<n;++i)if(a[i][n])bad=true;if(bad)cout<<"Oh,it's impossible~!!\n";else cout<<(1LL<<(n-row))<<'\n';}}
|