Pagini recente » Cod sursa (job #1884639) | Cod sursa (job #45015) | Cod sursa (job #2213400) | Cod sursa (job #511826) | Cod sursa (job #1717411)
#include <cstdio>
#include <algorithm>
#define MAX 12000000
#define MOD 104659
#define INF 6000000005
using namespace std;
char f[MAX],a1,a2;
int pos=0,N,M;
bool v[27][27];
int map[1005][27];
void r(int &nr)
{
nr=0;
while(f[pos]<'0'||f[pos]>'9')
pos++;
while(f[pos]>='0'&&f[pos]<='9')
nr=nr*10+f[pos++]-'0';
}
void rch(char &ch)
{
while(f[pos]<'a'||f[pos]>'z')
pos++;
ch=f[pos++];
}
int main()
{
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
fread(f,1,MAX,stdin);
r(N);r(M);
for(int i=1;i<=26;i++)
for(int j=1;j<=26;j++)
v[i][j]=1;
for(int i=1;i<=M;i++)
{
rch(a1);rch(a2);
a1-='a'-1;
a2-='a'-1;
v[a1][a2]=v[a2][a1]=0;
}
for(int i=1;i<=26;i++)
for(int j=1;j<=26;j++)
map[1][i]+=v[i][j];
for(int i=2;i<N;i++)
{
for(int j=1;j<=26;j++)
for(int k=1;k<=26;k++)
if(v[j][k])
map[i][j]=(map[i][j]+map[i-1][k])%MOD;
}
int S=0;
if(N==1)
printf("26");
else
{
for(int i=1;i<=26;i++)
S=(S+map[N-1][i])%MOD;
printf("%d",S);
}
return 0;
}