Pagini recente » Cod sursa (job #2596130) | Cod sursa (job #1396605) | Cod sursa (job #1622901) | Cod sursa (job #3327) | Cod sursa (job #1879037)
#include <fstream>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int Sigma = 26;
const int NMax = 1000;
const int MOD = 104659;
int N,M;
int A[Sigma+5][Sigma+5];
int DP[NMax+5][Sigma+5];
void Read()
{
fin >> N >> M;
for(int i = 1; i <= M; ++i)
{
char x,y;
fin >> x >> y;
A[x-'a'][y-'a'] = A[y-'a'][x-'a'] = 1;
}
}
void Solve()
{
for(int i = 0; i < Sigma; ++i)
DP[1][i] = 1;
for(int i = 2; i <= N; ++i)
for(int j = 0; j < Sigma; ++j)
for(int k = 0; k < Sigma; ++k)
if(!A[j][k])
{
DP[i][j] += DP[i-1][k];
DP[i][j] %= MOD;
}
}
void Print()
{
int Sol = 0;
for(int i = 0; i < Sigma; ++i)
Sol += DP[N][i];
fout << Sol << "\n";
}
int main()
{
Read();
Solve();
Print();
return 0;
}