Pagini recente » Cod sursa (job #811269) | Cod sursa (job #3284967) | Cod sursa (job #2451366) | Rezultatele filtrării | Cod sursa (job #1790779)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 1005
#define MOD 104659
int i,n,m,j,k;
char c1,c2;
int mat[30][30],dp[NMAX][30];
int main()
{
FILE *in,*out;
in = fopen("nrcuv.in","r");
out = fopen("nrcuv.out","w");
fscanf(in,"%d%d",&n,&m);
c1=fgetc(in);
for(i=1; i<=m; ++i)
{
c1=fgetc(in);
c2=fgetc(in);
c2=fgetc(in);
mat[c1-'a'][c2-'a']=1;
mat[c2-'a'][c1-'a']=1;
c1=fgetc(in);
}
for(i=0;i<26;++i) dp[1][i]=1;
for(i=2;i<=n;++i)
for(j=0;j<26;++j)
{
int sum=0;
for(k=0;k<26;++k)
if(mat[k][j] == 0)
{
sum = (sum + dp[i-1][k]);
if (sum > MOD) sum -= MOD;
}
dp[i][j]=sum;
}
int sol=0;
for(i=0;i<26;++i)
{
sol += dp[n][i];
if(sol > MOD) sol -= MOD;
}
fprintf(out,"%d\n",sol);
return 0;
}