Pagini recente » Cod sursa (job #2807802) | Cod sursa (job #2576780) | Cod sursa (job #1853164) | Cod sursa (job #1476657) | Cod sursa (job #1782428)
#include <cstdio>
using namespace std;
int m[30][30], d[1005][30];
int main()
{
freopen("nrcuv.in", "r", stdin);
freopen("nrcuv.out", "w", stdout);
int n, kk, ans = 0;
char a, b;
scanf("%d %d\n", &n, &kk);
for (int i = 1; i <= kk; ++i)
{
scanf("%c %c\n", &a, &b);
m[a - 'a' + 1][b - 'a' + 1] = 1; /// dupa a nu poate veni b ///
m[b - 'a' + 1][a - 'a' + 1] = 1;
}
for (int i = 1; i <= 26; ++i)
d[1][i] = 1;
for (int i = 2; i <= n; ++i)
for (int j = 1; j <= 26; ++j)
for (int k = 1; k <= 26; ++k)
if (m[k][j] == 0) // se poate pune litera k dupa j
d[i][j] = (d[i][j] + d[i - 1][k]) % 104659;
for (int i = 1; i <= 26; ++i)
ans = (ans + d[n][i]) % 104659;
printf("%d\n", ans);
return 0;
}