Pagini recente » Cod sursa (job #931630) | Cod sursa (job #168771) | Cod sursa (job #1889974) | Cod sursa (job #1507438) | Cod sursa (job #1465731)
#include <stdio.h>
#include <stdlib.h>
#define MOD 104659
#define S 0
#define E 25
int dp[2][26];
unsigned short int invalid[26][26];
int main() {
int n, k, i, c;
char buf[8], c1, c2;
unsigned long s = 0;
FILE *fi, *fo;
fi = freopen("nrcuv.in", "r", stdin);
fo = freopen("nrcuv.out", "w", stdout);
scanf("%d %d", &n, &k);
fgets(buf, 8, stdin);
for (i = 0; i < k; i++) {
fgets(buf, 8, stdin);
sscanf(buf, "%c %c", &c1, &c2);
invalid[c1 - 'a'][c2 - 'a'] = 1;
invalid[c2 - 'a'][c1 - 'a'] = 1;
}
for (c = S; c <= E; c++) {
dp[0][c] = 1;
}
i = 0;
while (n--) {
i = 1 - i;
for (c = S; c <= E; c++) {
for (k = S; k <= E; k++) {
if (invalid[c][k] == 0) {
dp[i][c] += dp[1 - i][k];
}
}
dp[i][c] %= MOD;
}
}
s = 0;
for (c = S; c <= E; c++) {
s += dp[1-i][c];
s %= MOD;
}
printf("%lu\n", s);
fclose(fi);
fclose(fo);
return 0;
}