Pagini recente » Cod sursa (job #2923553) | Cod sursa (job #1304223) | Cod sursa (job #1375163) | Cod sursa (job #498986) | Cod sursa (job #675952)
Cod sursa(job #675952)
#include <fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int ALPH = 28;
const int N = 1001;
const int MOD = 104659;
int n, m;
long long d[ALPH][N], sum;
int v[ALPH][ALPH];
inline int index(char x)
{
return (x - 'a');
}
void Read()
{
in >> n >> m;
for (int i = 1; i <= m; ++i)
{
char a, b;
in >> a >> b;
v[index(a)][index(b)] = v[index(b)][index(a)] = 1;
}
}
void Solve()
{
int lal = index('z');
for (int i = 0; i <= lal; ++i)
d[i][1] = 1;
for (int i = 2; i <= n; ++i)
for (int j = 0; j <= lal; ++j)
for (int k = 0; k <= lal; ++k)
if (!v[k][j])
{
d[j][i] += d[k][i-1];
if (d[j][i] >= MOD)
d[j][i] -= MOD;
}
}
void Print()
{
int lal = index('z');
for (int i = 0; i <= lal; ++i)
sum = (sum + d[i][n])%MOD;
out << sum << "\n";
}
int main()
{
Read();
Solve();
Print();
return 0;
}