Pagini recente » Cod sursa (job #452091) | Cod sursa (job #2289235) | Cod sursa (job #1822476) | Cod sursa (job #393584) | Cod sursa (job #935448)
Cod sursa(job #935448)
#include <stdio.h>
#include <memory.h>
#define HASHMAX 40
#define NMAX 4000
#define mod 104659
long prec[NMAX], curent[NMAX];
long n, m;
long hash[HASHMAX][HASHMAX];
void read()
{
int i;
char a, b;
scanf("%ld %ld\n", &n, &m);
for(i = 0; i < m; ++i)
{
scanf("%c %c\n", &a, &b);
hash[(a-'a')+1][(b-'a')+1] = 1;
hash[(b-'a')+1][(a-'a')+1] = 1;
}
}
void dinamic()
{
int i, j, k;
for(i = 1; i < NMAX; ++i)
prec[i] = 1;
for(i = 2; i <= n; ++i)
{
for(k = 1; k < 27; ++k)
for(j = 1; j < 27; ++j)
if(!hash[k][j])
{
curent[k] += prec[j];
curent[k] %= mod;
}
memcpy(prec, curent, 500*3);
memset(curent, 0, sizeof(curent));
}
}
void write()
{
unsigned long count = 0, i;
for(i = 1; i < 27; ++i)
count += prec[i];
count %= mod;
printf("%lu\n", count);
}
void print_a(long a[NMAX][NMAX])
{
int i, j;
for(i = 1; i < NMAX; ++i)
{
for(j = 1; j < NMAX; ++j)
printf("%ld ", a[i][j]);
printf("\n");
}
}
int main()
{
freopen("nrcuv.in", "r", stdin);
freopen("nrcuv.out", "w", stdout);
read();
//print_a(hash);
dinamic();
write();
fclose(stdin);
fclose(stdout);
return 0;
}