Pagini recente » Cod sursa (job #3243343) | Cod sursa (job #3246293) | Cod sursa (job #551725) | Cod sursa (job #2445789) | Cod sursa (job #2893939)
#include <iostream>
#include <vector>
#define modu 104659
#define lol long long
#define LETTER_COUNT 'z' - 'a' + 1
using namespace std;
FILE *fin = fopen("nrcuv.in", "r");
FILE *fout = fopen("nrcuv.out", "w");
bool allowed[LETTER_COUNT][LETTER_COUNT];
lol dp[1005][LETTER_COUNT];
int main()
{
int n, m;
fscanf(fin, "%d %d\n", &n, &m);
for (int i = 'a'; i <= 'z'; i++)
for (int j = 'a'; j <= 'z'; j++)
allowed[i - 'a'][j - 'a'] = true;
for (int i = 0; i < m; i++)
{
char a, b;
fscanf(fin, "%c %c\n", &a, &b);
allowed[a - 'a'][b - 'a'] = false;
allowed[b - 'a'][a - 'a'] = false;
}
for (int i = 'a'; i <= 'z'; i++)
dp[1][i - 'a']++;
for (int i = 1; i < n; i++)
for (int j = 'a'; j <= 'z'; j++)
for (int k = 'a'; k <= 'z'; k++)
if (allowed[j - 'a'][k - 'a'])
dp[i + 1][k - 'a'] = (dp[i + 1][k - 'a'] + dp[i][j - 'a']) % modu;
lol sum = 0;
for (int i = 'a'; i <= 'z'; i++)
sum = (sum + dp[n][i - 'a']) % modu;
fprintf(fout, "%lld\n", sum);
}