Cod sursa(job #1962480)

Utilizator TincaMateiTinca Matei TincaMatei Data 11 aprilie 2017 20:07:00
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>

char getch(FILE *fin) {
  char ch = fgetc(fin);
  while(ch == ' ' || ch == '\n')
    ch = fgetc(fin);
  return ch;
}

const int MAX_N = 1000;
const int MOD = 104659;
bool muchie[26][26];
int d[MAX_N][26];

int main() {
  int n, m;
  char a, b;
  FILE *fin = fopen("nrcuv.in", "r");
  fscanf(fin, "%d%d", &n, &m);
  for(int i = 0; i < m; ++i) {
    a = getch(fin) - 'a';
    b = getch(fin) - 'a';
    muchie[a][b] = muchie[b][a] = true;
  }
  fclose(fin);

  for(int i = 0; i < 26; ++i)
    d[0][i] = 1;
  for(int i = 1; i < n; ++i) {
    for(int j = 0; j < 26; ++j)
      for(int k = 0; k < 26; ++k)
        if(!muchie[j][k])
          d[i][j] = (d[i][j] + d[i - 1][k]) % MOD;
  }

  FILE *fout = fopen("nrcuv.out", "w");
  int r = 0;
  for(int i = 0; i < 26; ++i)
    r = (r + d[n - 1][i]) % MOD;
  fprintf(fout, "%d", r);
  fclose(fout);
  return 0;
}