Pagini recente » Cod sursa (job #109887) | Cod sursa (job #3265021) | Cod sursa (job #2539532) | Cod sursa (job #468930) | Cod sursa (job #46188)
Cod sursa(job #46188)
#include <stdio.h>
#define MOD 104659
#define NLIT 26
#define fin "nrcuv.in"
#define fout "nrcuv.out"
#define NMAX 1001
#define FOR(i,a,b) for(int i = a ; i < b ; ++i)
int s[NMAX][NLIT],a[NLIT][NLIT],N,M;
void init()
{
int i;
for(i = 0 ; i<NLIT ;++i)
a[i][i] = 1;
for(i = 0 ; i< NLIT - 1; ++i)
for(int j = i+1 ;j<NLIT ; ++j)
a[i][j] = a[j][i] = 1;
}
void readData()
{
freopen(fin,"r",stdin);
scanf("%d %d\n",&N,&M);
FOR(i,0,M)
{
char c1,c2;
scanf("%c %c\n",&c1,&c2);
int x = c1 - 'a' , y = c2 - 'a';
a[x][y] = a[y][x] = 0;
}
fclose(stdin);
}
void buildSol()
{
int i;
for(i = 0 ; i<NLIT ;++i)
s[1][i] = 1;
for(i = 2 ; i<=N ;++i)
for(int j = 0 ; j<NLIT ; ++j)
for(int k = 0 ; k < NLIT ; ++k)
if(a[j][k]) s[i][j] = s[i][j] + s[i-1][k] % MOD;
}
void writeData()
{
int sum = 0;
for(int i=0;i<NLIT;sum+=s[N][i++]);
freopen(fout,"w",stdout);
printf("%d\n",sum % MOD);
fclose(stdout);
}
int main()
{
init();
readData();
buildSol();
writeData();
return 0;
}