Pagini recente » Cod sursa (job #540892) | Cod sursa (job #924651) | Cod sursa (job #2979358) | Cod sursa (job #1419221) | Cod sursa (job #1879315)
#include <fstream>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int NMAX = 1005;
const int DMAX = 30;
const int MOD = 104659;
int n, m;
int dp[DMAX][NMAX];
bool A[DMAX][DMAX];
void read()
{
fin >> n >> m;
for (int i = 1; i <= m; ++ i)
{
char x, y;
fin >> x >> y;
A[x - 'a' + 1][y - 'a' + 1] = A[y - 'a' + 1][x - 'a' + 1] = true;
}
}
void solve()
{
for (int i = 1; i <= 26; ++ i)
dp[i][1] = 1;
for (int i = 2; i <= n; ++ i)
{
for (int j = 1; j <= 26; ++ j)
for (int k = 1; k <= 26; ++ k)
if (!A[j][k])
dp[j][i] = (dp[j][i] + dp[k][i - 1]) % MOD;
}
}
void print()
{
int sum = 0;
for (int i = 1; i <= 26; ++ i)
sum = (sum + dp[i][n]) % MOD;
fout << sum << "\n";
}
int main()
{
read();
fin.close();
solve();
print();
fout.close();
return 0;
}