Pagini recente » Cod sursa (job #2774815) | Cod sursa (job #1515406) | Cod sursa (job #1921381) | Cod sursa (job #972302) | Cod sursa (job #1388179)
#include <fstream>
using namespace std;
const int kMod = 104659;
const int kMax = 1005;
const int kAlpha = 26;
int n, m, dp[kMax][kAlpha];
bool isCompatible[kAlpha][kAlpha];
void read()
{
for (int i = 0; i < kAlpha; ++i)
for (int j = 0; j < kAlpha; ++j)
isCompatible[i][j] = true;
ifstream fin("nrcuv.in");
fin >> n >> m;
for (int i = 0; i < m; ++i)
{
char u, v;
fin >> u >> v;
isCompatible[u - 'a'][v - 'a'] = false;
isCompatible[v - 'a'][u - 'a'] = false;
}
fin.close();
}
void write()
{
ofstream fout("nrcuv.out");
int res = 0;
for (int c = 0; c < kAlpha; ++c)
res = (res + dp[n - 1][c]) % kMod;
fout << res << '\n';
fout.close();
}
void countStrings()
{
for (int c = 0; c < kAlpha; ++c)
dp[0][c] = 1;
for (int i = 1; i < n; ++i)
for (int c = 0; c < kAlpha; ++c)
for (int k = 0; k < kAlpha; ++k)
dp[i][c] = (dp[i][c] + dp[i - 1][k] * isCompatible[c][k]) % kMod;
}
int main()
{
read();
countStrings();
write();
return 0;
}