Pagini recente » Cod sursa (job #2940174) | Cod sursa (job #2267892) | Cod sursa (job #2387812) | Cod sursa (job #2488191) | Cod sursa (job #2215251)
#include <vector>
#include <fstream>
#define ALPHA 30
#define NMAX 1010
#define MOD 104659
std::ifstream fin("nrcuv.in");
std::ofstream fout("nrcuv.out");
int n, m;
bool ad[ALPHA][ALPHA];
int sol;
int dp[NMAX][ALPHA];
std::vector<int> v[ALPHA];
int main() {
char x, y;
fin >> n >> m;
for (int i = 0; i < m; i++) {
fin >> x >> y;
ad[x - 'a'][y - 'a'] =
ad[y - 'a'][x - 'a'] = true;
}
for (int i = 0; i < 26; i++)
for (int j = 0; j < 26; j++)
if (!ad[i][j])
v[i].push_back(j);
for (int j = 0; j < 26; j++)
dp[1][j] = 1;
for (int i = 2; i <= n; i++)
for (int j = 0; j < 26; j++)
for (int k : v[j])
dp[i][j] = (dp[i][j] + dp[i - 1][k]) % MOD;
for (int j = 0; j < 26; j++)
sol = (sol + dp[n][j]) % MOD;
fout << sol << '\n';
fout.close();
return 0;
}