Pagini recente » Borderou de evaluare (job #1800377) | Cod sursa (job #1844960) | Cod sursa (job #1726530) | Cod sursa (job #3347977) | Cod sursa (job #3340660)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("nrcuv.in");
ofstream out ("nrcuv.out");
#define MOD 104659
bool allowed[128][128];
long long dp[1001][1001];
int main ()
{
int n, m;
in >> n >> m;
for (int i = 0; i < m; i++)
{
char a, b;
in >> a >> b;
allowed[(int)a][(int)b] = true;
allowed[(int)b][(int)a] = true;
}
for (int i = 97; i <= 122; i++)
dp[i][0] = 1;
for (int i = 1; i < n; i++)
for (int j = 97; j <= 122; j++)
{
dp[j][i] = 0;
for (int c = 97; c <= 122; c++)
if (!allowed[c][j])
dp[j][i] += dp[c][i-1];
}
long long total_dp = 0;
for (int i = 97; i <= 122; i++)
total_dp = (total_dp + dp[i][n-1]) % MOD;
out << total_dp;
return 0;
}