Pagini recente » Cod sursa (job #1911272) | Cod sursa (job #2175625) | Cod sursa (job #508573) | Cod sursa (job #2879948) | Cod sursa (job #3160245)
#include <iostream>
#include <fstream>
#define MAXN 1006
#define DIM 30
#define MOD 104659
std::ifstream fin("nrcuv.in");
std::ofstream fout("nrcuv.out");
using namespace std;
int N,M;
int dp[MAXN][DIM]; /// dp[i][ch-'a']= nr litere de lungime i ce se termina in caracterul ch
bool permission[DIM][DIM];
void Read()
{
fin>>N>>M;
for(char c1='a';c1<='z';c1++)
for(char c2='a';c2<='z';c2++)
permission[c1-'a'][c2-'a']=true;
for(char c1,c2;M--;) {
fin>>c1>>c2;
permission[c1-'a'][c2-'a']=false;
permission[c2-'a'][c1-'a']=false;
}
}
void Dinamica()
{
for(char ch='a';ch<='z';ch++)
dp[1][ch-'a']=1;
for(int i=2;i<=N;i++)
for(char cnext='a';cnext<='z';cnext++)
for(char ch='a';ch<='z';ch++)
dp[i][cnext-'a']=(dp[i][cnext-'a'] + permission[ch-'a'][cnext-'a']*dp[i-1][ch-'a'])%MOD;
int ans=0;
for(char ch='a';ch<='z';ch++)
ans=(ans + dp[N][ch-'a'])%MOD;
fout<<ans;
}
int main()
{
Read();
Dinamica();
return 0;
}