Pagini recente » Cod sursa (job #1314988) | Cod sursa (job #3041455) | Cod sursa (job #229516) | Cod sursa (job #801183) | Cod sursa (job #1096262)
#include <fstream>
using namespace std;
#define MOD 104659
ifstream fi("nrcuv.in");
ofstream fo("nrcuv.out");
int N, M;
bool perm[256][256];
void init_perm() {
for(int i = 0; i < 256; ++i) {
for(int j = 0; j < 256; ++j) {
perm[i][j] = true;
}
}
}
void read() {
fi >> N >> M;
for(int i = 0; i < M; ++i) {
char x, y;
fi >> x >> y;
perm[(int)x][(int)y] = perm[(int)y][(int)x] = false;
}
}
int mem[1001][256];
void init_mem() {
for(int i = 0; i < 1001; ++i)
for(int j = 0; j < 256; ++j)
mem[i][j] = -1;
}
int f(int N, int s) {
// cate numere de N incep cu s.
if(N == 1) return 1;
if(mem[N][s] == -1) {
int sum = 0;
for(int i = 'a'; i <= 'z'; ++i) {
if(perm[s][i]) {
sum += f(N - 1, i);
}
}
mem[N][s] = sum % MOD;
}
return mem[N][s];
}
int main(int argc, char *argv[]) {
init_perm();
read();
init_mem();
int sum = 0;
for(int i = 'a'; i <= 'z'; ++i) sum += f(N, i);
sum = sum % MOD;
fo << sum << endl;
return 0;
}