| ||||||||||
| 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 | |||||||||
where is wrong ??#include<iostream>
using namespace std;
bool map[1001][1001];
int visit[1024];
int visit1[1024];
int match[1024];
int visit2[1024];
int n,m;
char str[11];
int state[1024];
bool hash[1024];
int r[1024];
int l;
bool dfs(int k)
{
int i;
for(i=0;i<m;i++)
{
if(map[k][i]&&!visit2[i])
{
visit2[i]=1;
int t=match[i];
match[i]=k;
if(t==-1||dfs(t))
return true;
match[i]=t;
}
}
return false;
}
bool compare(int a,int b ,int n)
{
int c[11];
int d[11];
int i=0,count=0;
for(i=0;i<n;i++)
{
c[i]=a%2;
a/=2;
d[i]=b%2;
b/=2;
if(c[i]!=d[i])
count++;
}
if(count<=1)
return true;
else
return false;
}
int main()
{
int N,s,i,j;
while(scanf("%d %d",&N,&s)&&N+s)
{
memset(visit,0,sizeof(visit));
memset(visit1,0,sizeof(visit1));
memset(state,0,sizeof(state));
memset(hash,0,sizeof(hash));
memset(map,0,sizeof(map));
l=0;
for(i=0;i<s;i++)
{
scanf("%s",&str);
int p=-1;
for(j=0;j<N;j++)
{
if(str[j]=='*')
{
p=j;
continue;
}
state[l]+=(str[j]-'0')*(1<<(N-j-1));
}
if(p!=-1)
{
l++;
state[l]=state[l-1]|(1<<(N-p-1));
if(!hash[state[l]])
{
hash[state[l]]=1;
if(!hash[state[l-1]])
hash[state[l-1]]=1;
else
{
state[l-1]=state[l];
state[l]=0;
l--;
}
}
else
{
state[l]=0;
l--;
if(!hash[state[l]])
hash[state[l]]=1;
else
{
state[l]=0;
l--;
}
}
}
else
{
if(!hash[state[l]])
hash[state[l]]=1;
else
{
state[l]=0;
l--;
}
}
l++;
}
n=m=0;
for(i=0;i<l;i++)
{
bool flag=0;
if(!visit[i]&&!visit1[i])
{
for(j=0;j<l;j++)
{
if(i!=j)
{
if(!visit[j])
{
visit[i]=1;
if(compare(state[i],state[j],N))
{
flag=1;
if(!visit1[j])
{
map[n][m]=1;
visit1[j]=1;
r[m]=state[j];
m++;
}
else
{
for(int w=0;w<m;w++)
{
if(r[w]==state[j])
{
map[n][w]=1;
}
}
}
}
}
}
}
}
if(flag)
n++;
}
memset(match,-1,sizeof(match));
for(i=0;i<n;i++)
{
memset(visit2,0,sizeof(visit2));
dfs(i);
}
int sum=0;
for(i=0;i<m;i++)
{
if(match[i]!=-1)
sum++;
}
printf("%d\n",l-sum);
}
}
have run 187MS
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator