Cod sursa(job #2331993)

Utilizator vladcainamisirVlad Cainamisir vladcainamisir Data 30 ianuarie 2019 11:39:56
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <vector>
const int NMAX = 1000;
const int CMAX = 26;
const int MODULO = 104659;
int dp[1 + NMAX][CMAX];
bool ad[CMAX][CMAX];
int main() {
  freopen("nrcuv.in", "r", stdin);
  freopen("nrcuv.out", "w", stdout);
  int n, m;
  scanf("%d%d\n", &n, &m);
  for (int i = 1; i <= m; i++) {
    char c, c2;
    scanf("%c %c\n", &c, &c2);
    ad[c - 'a'][c2 - 'a'] = 1;
    ad[c2 - 'a'][c - 'a'] = 1;
  }
  for (int j = 0; j < CMAX; j++)
    dp[1][j] = 1;
  for (int i = 2; i <= n; i++) {
    for (int j = 0; j < CMAX; j++) {
      for (int k = 0; k < CMAX; k++) {
        if (ad[j][k] == 0)
          dp[i][j] = (dp[i][j] + dp[i - 1][k]) % MODULO;
      }
    }
  }
  int ans = 0;
  for (int j = 0; j < CMAX; j++)
    ans = (ans + dp[n][j]) % MODULO;
  printf("%d\n", ans);
  return 0;
}