Pagini recente » Cod sursa (job #981313) | Cod sursa (job #655804) | Cod sursa (job #129173) | Cod sursa (job #2359776) | Cod sursa (job #1018260)
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>
#define pii pair<int,int>
#define mp make_pair
#define x first
#define y second
#define i64 long long
using namespace std;
const int nmax = 1002, mod = 104659;
int N, M;
int bad[26];
int dp[2][26];
inline void getMod(int &val) {
val -= val < mod ? 0 : mod;
}
int main()
{
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
scanf("%d %d\n",&N,&M);
char a, b;
for(int i = 1;i <= M;i++) {
scanf("%c %c\n",&a,&b);
bad[a - 'a'] |= 1<<(b - 'a');
bad[b - 'a'] |= 1<<(a - 'a');
}
for(int i = 0;i < 26;i++) {
dp[0][i] = 1;
}
int line = 0;
for(int i = 2;i <= N;i++,line ^= 1) {
for(int j = 0;j < 26;j++) {
dp[1 - line][j] = 0;
for(int k = 0;k < 26;k++) {
if((bad[k]>>j) & 1) continue;
dp[1 - line][j] += dp[line][k];
getMod(dp[1 - line][j]);
}
}
}
int ans = 0;
for(int i = 0;i < 26;i++) {
ans += dp[line][i];
}
ans %= mod;
printf("%d\n",ans);
return 0;
}