| ||||||||||
| 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 | |||||||||
哪位大神看一下错在哪里了,感激不尽#include<iostream>
#include<algorithm>
using namespace std;
#define N 30
int b[N];
int a[N][N];
int n;
int count()
{
int t=0;
for (int i=1;i<=n-1;i++)
{
int row=i;
for (int k=i+1;k<=n;k++)
if (a[i][i]<a[k][i])
row=k;
if (row!=i)
{
for (int k=i;k<=n;k++)
swap(a[i][k],a[row][k]);
swap(b[i],b[row]);
}
if (a[i][i]==0) continue;
t=i;
for (int k=i+1;k<=n;k++)
{
if (a[k][i]!=0)
{
for (int j=i;j<=n;j++)
a[k][j]^=a[i][j];
b[k]^=b[i];
}
}
}
if (t==n-1)
if (a[n][n]==1)
t++;
for (int k=t+1;k<=n;k++)
if (b[k]!=0) return 0;
return (1<<(n-t));
}
int main()
{
int k;
cin>>k;
while (k--)
{
memset(a,0,sizeof(a));
cin>>n;
for (int i=1;i<=n;i++)
cin>>b[i];
for (int i=1;i<=n;i++)
{
int end;
cin>>end;
b[i]^=end;
a[i][i]=1;
}
int start,end;
while ((cin>>start>>end)&&(start||end))
a[end][start]=1;
int t=count();
if (t==0)
cout<<"Oh,it's impossible~!!"<<endl;
else
cout<<t<<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator