Pagini recente » Cod sursa (job #1025393) | Cod sursa (job #1735295) | Cod sursa (job #587664) | Cod sursa (job #45703) | Cod sursa (job #2713319)
#include <cstdio>
#define NMAX 1000
#define MOD 104659
using namespace std;
int n,m;
int a[32][32],dp[NMAX+3][NMAX+3];
FILE *fin,*fout;
int main()
{
fin=fopen("nrcuv.in","r");
fout=fopen("nrcuv.out","w");
fscanf(fin,"%d %d\n",&n,&m);
for(int i=1; i<=m; i++)
{
char c1,c2;
fscanf(fin,"%c %c\n",&c1,&c2);
//marchez in matricea a ca nu pot forma cuv cu literele acestea
a[c1-'a'][c2-'a']=1;
a[c2-'a'][c1-'a']=1;
}
for(int i=0; i<='z'-'a'; i++)
{
dp[1][i]=1;
}
for(int i=2; i<=n; i++)
{
for(int j=0; j<='z'-'a'; j++)
{
for(int k=0; k<='z'-'a'; k++)
{
if(a[k][j]==0)
{
//pot sa imi formez cuvant
dp[i][j]+=dp[i-1][k];
dp[i][j]%=MOD;
}
}
}
}
long long int suma=0;
for(int i=0; i<='z'-'a'; i++)
{
suma+=dp[n][i];
suma%=MOD;
}
fprintf(fout,"%lld",suma);
return 0;
}