测试结果1: 选手程序无输出
测试结果2: 选手程序无输出
测试结果3: 选手程序无输出
测试结果4: 选手程序无输出
测试结果5: 选手程序无输出
测试结果6: 选手程序无输出
测试结果7: 选手程序无输出
测试结果8: 选手程序无输出
测试结果9: 选手程序无输出
测试结果10:选手程序无输出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct
{
char st[300];
int x;
} s[5000000];
int i,n,ans;
char a[10][300],b[10][300];
int boo[100009];
char booc[100009][300];
int hash(char a[])
{
long x,len,i,sum;
x=1;len=strlen(a);
sum=0;
for (i=0;i<len;i++)
{
x=(x*131)%100007;
sum=(sum+x*a[i])%100007;
}
while (boo[sum]==1 && strcmp(a,booc[sum])!=0) sum++;
if (strcmp(a,booc[sum])==0)
{
return 1;
} else
{
boo[sum]=1;
strcpy(booc[sum],a);
}
return 0;
}
void search()
{
long i,j,len,t,f;
char tt[300];
t=0;f=1;
s[f].x=0;
strcpy(s[f].st,a[1]);
while (t<=f)
{
t++;
if (s[t].x<10)
for (i=2;i<=n;i++)
{
len=strlen(a[i]);
for (j=0;j<strlen(a[1])-len+1;j++)
{
strcpy(a[1],s[t].st);
if (strncmp(a[1]+j,a[i],len)==0)
{
strcpy(tt,a[1]+j+len);
strcpy(a[1]+j,b[i]);
strcat(a[1],tt);
if (hash(a[1])==0)
{
f++;
strcpy(s[f].st,a[1]);
s[f].x=s[t].x+1;
if (strcmp(b[1],s[f].st)==0)
{
printf("%d",s[f].x);
exit(0);
}
}
}
}
}
}
}
int main()
{
//freopen("main.in","r",stdin);
while (!feof(stdin))
{
i++;
scanf("%s%s",a[i],b[i]);
}
n=i;
hash(a[1]);
search();
printf("NO ANSWER!");
return 0;
}