Pagini recente » Cod sursa (job #282072) | Cod sursa (job #2710460) | Cod sursa (job #482799) | Cod sursa (job #603728) | Cod sursa (job #2913436)
#include <fstream>
#include <set>
using namespace std;
#define NMAX 1000
#define MOD 104659
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int ALF = 26;
set <int> s[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;
s[x - 'a'].insert(y - 'a');
s[y - 'a'].insert(x - 'a');
}
for (int j = 0; j < ALF; ++j)
dp[0][j] = 1;
for (int i = 1; i < n; ++i)
for (int j = 0; j < ALF; ++j)
for (int k = 0; k < ALF; ++k)
if (s[j].find(k) == s[j].end())
dp[i][k] = modulo(dp[i][k] + dp[i - 1][j]);
int ans = 0;
--n;
for (int j = 0; j < ALF; ++j)
ans = modulo(ans + dp[n][j]);
out << ans << '\n';
return 0;
}