Pagini recente » Cod sursa (job #2716769) | Cod sursa (job #596755) | Cod sursa (job #1244768) | Cod sursa (job #3180135) | Cod sursa (job #2336849)
#include <bits/stdc++.h>
using namespace std;
int dp[2][26];
bool car[26][26];
const int MOD = 104659;
void add (int &a, int b) {
a += b;
if (a >= MOD)
a -= MOD;
}
int main() {
int n, m, sol, i;
char a, b, next, last, c;
freopen ("nrcuv.in", "r", stdin);
freopen ("nrcuv.out", "w", stdout);
scanf ("%d%d\n", &n, &m);
for (i = 1; i <= m; i++) {
scanf ("%c %c\n", &a, &b);
a -= 'a';
b -= 'a';
car[a][b] = car[b][a] = 1;
}
for (c = 0; c < 26; c++)
dp[1][c] = 1;
for (i = 2; i <= n; i++)
for (next = 0; next < 26; next++) {
dp[i % 2][next] = 0;
for (last = 0; last < 26; last++)
if (car[next][last] == 0)
add (dp[i % 2][next], dp[1 - i % 2][last]);
}
sol = 0;
for (c = 0; c < 26; c++)
add (sol, dp[n % 2][c]);
printf ("%d\n", sol);
return 0;
}