Pagini recente » Cod sursa (job #2825100) | Cod sursa (job #1158349) | Cod sursa (job #973822) | Cod sursa (job #643951) | Cod sursa (job #1580704)
#include <cstdio>
using namespace std;
const int nmx = 1002;
const int crx = 30;
const int mod = 104659;
int n,m,dp[2][crx];
bool mat[crx][crx];
inline int toint(const char &c) {
return (int)c - 96;
}
int main() {
freopen("nrcuv.in", "r", stdin);
freopen("nrcuv.out", "w", stdout);
scanf("%d %d\n", &n, &m);
for(int i = 1; i <= m; ++i) {
char c1,c2;
scanf("%c %c\n", &c1, &c2);
mat[toint(c1)][toint(c2)] = true;
mat[toint(c2)][toint(c1)] = true;
}
bool pos = 0;
for(int i = 1; i <= 26; ++i)
dp[0][i] = 1;
for(int l = 2; l <= n; ++l) {
pos = pos ^ 1;
for(int i = 1; i <= 26; ++i) {
dp[pos][i] = 0;
for(int j = 1; j <= 26; ++j)
if(not mat[i][j])
dp[pos][i] = (dp[pos][i] + dp[pos^1][j]) % mod ;
}
}
int sum = 0;
for(int i = 1; i <= 26; ++i)
sum = (sum + dp[pos][i]) % mod;
printf("%d\n", sum);
return 0;
}