Pagini recente » Cod sursa (job #1526131) | Cod sursa (job #632352) | Cod sursa (job #2740244) | Cod sursa (job #2142394) | Cod sursa (job #1306317)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("nrcuv.in");
ofstream g ("nrcuv.out");
const int MOD = 104659, NMAX = 1000 + 1, LMAX = 26 + 1;
int n, m;
bool regula[LMAX][LMAX];
int dp[NMAX][LMAX];
void citeste() {
char a, b;
f >> n >> m;
for (int i = 1; i <= m; i++) {
f >> a >> b;
regula[a - 'a' + 1][b - 'a' + 1] = true;
regula[b - 'a' + 1][a - 'a' + 1] = true;
}
}
void rezolva() {
for (int i = 1; i <= LMAX; i++) dp[1][i] = 1;
for (int i = 2; i <= n; i++)
for (int a = 1; a < LMAX; a++)
for (int b = 1; b < LMAX; b++)
if (regula[a][b] == false) {
dp[i][a] = (dp[i - 1][b] + dp[i][a]) % MOD;
}
int sol = 0;
for (int i = 1; i < LMAX; i++) sol = (sol + dp[n][i]) % MOD;
g << sol << '\n';
}
int main() {
citeste();
rezolva();
return 0;
}