Pagini recente » Cod sursa (job #2065457) | Cod sursa (job #130201) | Cod sursa (job #2639439) | Cod sursa (job #34109) | Cod sursa (job #1849900)
#include <fstream>
using namespace std;
const int Mod = 104659;
bool can[26][26];
int dp[1001][26];
int main()
{
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
int n,m;
fill_n(can[0],26*26,1);
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
char a,b;
fin >> a >> b;
can[a-'a'][b-'a'] = 0;
can[b-'a'][a-'a'] = 0;
}
for (int i = 0; i < 26; i++) dp[1][i] = 1;
for (int i = 2; i <= n; i++)
for (int j = 0; j < 26; j++)
for (int k = 0; k < 26; k++)
{
if (!can[j][k]) continue;
dp[i][k] += dp[i-1][j];
if (dp[i][k] >= Mod) dp[i][k] -= Mod;
}
int Sol = 0;
for (int i = 0; i < 26; i++)
{
Sol += dp[n][i];
if (Sol >= Mod) Sol -= Mod;
}
fout << Sol;
}