Pagini recente » Cod sursa (job #1934854) | Cod sursa (job #2819354) | Cod sursa (job #57298) | Cod sursa (job #1734267) | Cod sursa (job #2331993)
#include <cstdio>
#include <vector>
const int NMAX = 1000;
const int CMAX = 26;
const int MODULO = 104659;
int dp[1 + NMAX][CMAX];
bool ad[CMAX][CMAX];
int main() {
freopen("nrcuv.in", "r", stdin);
freopen("nrcuv.out", "w", stdout);
int n, m;
scanf("%d%d\n", &n, &m);
for (int i = 1; i <= m; i++) {
char c, c2;
scanf("%c %c\n", &c, &c2);
ad[c - 'a'][c2 - 'a'] = 1;
ad[c2 - 'a'][c - 'a'] = 1;
}
for (int j = 0; j < CMAX; j++)
dp[1][j] = 1;
for (int i = 2; i <= n; i++) {
for (int j = 0; j < CMAX; j++) {
for (int k = 0; k < CMAX; k++) {
if (ad[j][k] == 0)
dp[i][j] = (dp[i][j] + dp[i - 1][k]) % MODULO;
}
}
}
int ans = 0;
for (int j = 0; j < CMAX; j++)
ans = (ans + dp[n][j]) % MODULO;
printf("%d\n", ans);
return 0;
}