Pagini recente » Cod sursa (job #781127) | Cod sursa (job #2458180) | Cod sursa (job #1012833) | Utilizatori inregistrati la FMI No Stress 9 Warmup | Cod sursa (job #3281237)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1000;
const int MDO = 104659;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
int n, m;
int dp[NMAX+1][27]; //dp[i][j] cate cuvinte pot forma de lungime i care se termina in caracterul char(j+'a')
char a, b;
int nu[27][27];
int main()
{
fin >> n >> m;
for(int i=1; i<=m; i++)
{
fin >> a >> b;
nu[a-'a'][b-'a'] = 1;
}
for(char a='a'; a<='z'; a++)
dp[1][a-'a']=1;//pot forma un singur cuvant din fiecare litera
for(int l=2; l<=n; l++)
{
for(char c='a'; c<='z'; c++)
for(char c2='a'; c2<='z'; c2++)
if(!nu[c2-'a'][c-'a'] && !nu[c-'a'][c2-'a'])
dp[l][c-'a']=1ll*(dp[l][c-'a']+dp[l-1][c2-'a'])%MOD;
}
int ans = 0;
for(char c='a'; c<='z'; c++)
ans=1ll*(ans+dp[n][c-'a'])%MOD;
fout << ans;
return 0;
}