Pagini recente » Cod sursa (job #93798) | Cod sursa (job #672207) | Cod sursa (job #1423879) | Cod sursa (job #2247069) | Cod sursa (job #2394672)
#include <fstream>
using namespace std;
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
int n, k, dp[27][1001], a, b, A[27][27];
char x, y;
int main()
{
f >> n >> k;
for (int i = 1; i <= k; ++i) {
f >> x >> y;
a = x - 'a' + 1, b = y - 'a' + 1;
if (!A[a][b]) {
A[a][0]++;
if (a - b) A[b][0]++;
A[a][b] = A[b][a] = 1;
}
}
for (int i = 1; i <= 26; ++i) dp[i][1] = 1, dp[i][2] = 26 - A[i][0];
for (int j = 3; j <= n; ++j) {
for (int i = 1; i <= 26; ++i) {
for (int l = 1; l <= 26; ++l) if (!A[i][l]) dp[i][j] += dp[l][j - 1];
dp[i][j] = ((dp[i][j] % 104659) + 104659) % 104659;
}
}
int s = 0;
for (int i = 1; i <= 26; ++i) s += dp[i][n];
g << s % 104659<< endl;
return 0;
}