Pagini recente » Cod sursa (job #2096665) | Cod sursa (job #2514982) | Cod sursa (job #1530398) | Cod sursa (job #3254501) | Cod sursa (job #1456414)
#include <stdio.h>
#define FIN "nrcuv.in"
#define FOUT "nrcuv.out"
#define NR_LITERE 'z'-'a'+1
#define POZITIE(c) ((int)((c)-'a'))
#define LUNG_MAX 1000
#define MOD 104659
FILE *in, *out;
int N, M, solution;
bool perechi[NR_LITERE][NR_LITERE];
int din[LUNG_MAX][NR_LITERE];
void solve(){
for(int i=0; i < NR_LITERE; i++){
din[1][i] = 1;
}
for(int i=2; i <= N; i++){
for(int j=0; j < NR_LITERE; j++){
for(int k=0; k < NR_LITERE; k++){
if(!perechi[j][k]){
din[i][j] = (din[i][j] + din[i-1][k]) % MOD;
}
}
}
}
for(int i=0; i < NR_LITERE; i++){
solution = (solution + din[N][i]) % MOD;
}
}
int main(){
in = fopen(FIN, "rt");
out = fopen(FOUT, "wt");
if(!in || !out) return 1;
fscanf(in, "%d%d", &N, &M);
for(int i=0; i < M; i++){
char x, y, z, t;
fscanf(in, "%c%c%c%c", &x, &y, &z, &t);
perechi[POZITIE(y)][POZITIE(t)] = true;
perechi[POZITIE(t)][POZITIE(y)] = true;
}
solve();
fprintf(out, "%d", solution);
fclose(in);
fclose(out);
return 0;
}