Pagini recente » Cod sursa (job #2069767) | Cod sursa (job #299237) | Cod sursa (job #1644269) | Cod sursa (job #1412838) | Cod sursa (job #2395112)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int N=1001, M=26, MOD=104659;
int n, m, dp[N][M]; //d[i][j]=nr. de cuvinte de lungime i care se termina cu a j-a litera
bool bad[M][M];
int main(){
in>>n>>m;
for(int i=1; i<=m; i++){
char a, b;
in>>a>>b;
bad[a-'a'][b-'a']=true;
bad[b-'a'][a-'a']=true;
}
for(int i='a'; i<='z'; i++){
dp[1][i-'a']=1;
}
for(int i=2; i<=n; i++){
for(char j='a'; j<='z'; j++){
for(char anterior='a'; anterior<='z'; anterior++){
if(!bad[anterior-'a'][j-'a']){
dp[i][j-'a']+=dp[i-1][anterior-'a'];
dp[i][j-'a']%=MOD;
}
}
}
}
int rez=0;
for(char i='a'; i<='z'; i++){
rez+=dp[n][i-'a'];
rez%=MOD;
}
out<<rez;
return 0;
}