Pagini recente » Cod sursa (job #3232293) | Cod sursa (job #1001901) | Cod sursa (job #2206389) | Cod sursa (job #2459243) | Cod sursa (job #3235012)
#include <fstream>
using namespace std;
const int N = 1000, MOD = 104659, AZ = 26;
bool interzis[AZ][AZ];
int dp[N + 1][AZ];
int main()
{
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
int n, m;
in >> n >> m;
for (int i = 0; i < m; i ++)
{
char l1, l2;
in >> l1 >> l2;
int a = l1 - 'a', b = l2 - 'a';
if (!interzis[a][b])
{
interzis[a][b] = interzis[b][a] = true;
}
}
for (int j = 0; j < AZ; j ++)
{
dp[1][j] = 1;
}
for (int i = 2; i <= n; i ++)
{
for (int j = 0; j < AZ; j ++)
{
for (int k = 0; k < AZ; k ++)
{
if (!interzis[j][k])
{
dp[i][j] = (dp[i][j] + dp[i - 1][k]) % MOD;
}
}
}
}
int s = 0;
for (int j = 0; j < AZ; j ++)
{
s = (s + dp[n][j]) % MOD;
}
out << s;
in.close();
out.close();
return 0;
}