Pagini recente » Cod sursa (job #3239025) | Cod sursa (job #2644808) | Cod sursa (job #3268058) | Cod sursa (job #42047) | Cod sursa (job #2913437)
#include <fstream>
using namespace std;
#define NMAX 1000
#define MOD 104659
#define ALF 26
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
bool s[ALF][ALF];
int dp[NMAX][ALF];
inline int modulo(int nr) {
if (nr >= MOD)
nr -= MOD;
return nr;
}
int main()
{
int n, m;
in >> n >> m;
char x, y;
for (int i = 0; i < m; ++i) {
in >> x >> y;
x -= 'a';
y -= 'a';
s[x][y] = s[y][x] = true;
}
for (register int j = 0; j < ALF; ++j)
dp[0][j] = 1;
for (register int i = 1; i < n; ++i)
for (register int j = 0; j < ALF; ++j)
for (register int k = 0; k < ALF; ++k)
if (!s[k][j])
dp[i][k] = modulo(dp[i][k] + dp[i - 1][j]);
int ans = 0;
--n;
for (register int j = 0; j < ALF; ++j)
ans = modulo(ans + dp[n][j]);
out << ans << '\n';
return 0;
}