Pagini recente » Cod sursa (job #5635) | Cod sursa (job #669455) | Cod sursa (job #94185) | Cod sursa (job #1824602) | Cod sursa (job #2151899)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int MOD = 104659;
int n, m, dp[2][30];
bool deny[30][30];
int main()
{
in >> n >> m;
for (int i = 1; i <= m; ++i) {
char a, b;
in >> a >> b;
deny[a - 'a' + 1][b - 'a' + 1] = true;
deny[b - 'a' + 1][a - 'a' + 1] = true;
}
int flag = 0;
for (int i = 1; i <= 26; ++i) dp[flag][i] = 1;
flag ^= 1;
for (int i = 2; i <= n; ++i) {
for (int j = 1; j <= 26; ++j) {
for (int k = 1; k <= 26; ++k) {
if (!deny[j][k]) {
dp[flag][j] += dp[flag^1][k];
dp[flag][j] %= MOD;
}
}
}
flag ^= 1;
}
int sol = 0;
for (int j = 1; j <= 26; ++j) {
sol += dp[flag^1][j];
sol %= MOD;
}
out << sol;
return 0;
}