Cod sursa(job #602239)

Utilizator Smaug-Andrei C. Smaug- Data 9 iulie 2011 22:39:17
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <cstdio>

#define MAXN 1005
#define LET 26
#define MOD 104659

int A[LET][LET], W[LET][MAXN];

int main(){

  freopen("nrcuv.in", "r", stdin);
  freopen("nrcuv.out", "w", stdout);

  int N, M, i, j, k;
  char a, b;

  scanf("%d %d\n", &N, &M);
  for(i=1; i<=M; i++){
    scanf("%c %c\n", &a, &b);
    A[(int)(a-'a')][(int)(b-'a')]=A[(int)(b-'a')][(int)(a-'a')]=1;
  }

  for(i=0; i<LET; i++)
    W[i][1]=1;
  for(j=2; j<=N; j++)
    for(i=0; i<LET; i++)
      for(k=0; k<LET; k++)
	if(!A[i][k])
	  W[i][j]=(W[i][j]+W[k][j-1])%MOD;

  k=0;
  for(i=0; i<LET; i++)
    k=(k+W[i][N])%MOD;

  printf("%d\n", k);

  return 0;

}